Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Нумерация dataGridView1, со 2 раза нумерует) 
V
    Опции темы
Banderos
Дата 2.6.2011, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 21.3.2011

Репутация: нет
Всего: нет



Здравствуйте!!!

Дело вот в чем: есть форма, на ней различные элементы и по мимо всех других есть panel2
Изначально она невидимая, а потом по нажатию на кнопку она становится видимой и на ней есть dataGridView1 я его заполняю данными и затем нумерую строки dataGridView1 таким образом:

Код

                for (int S = 0; S < listData_DG.RowCount - 1; S++)
                {
                    listData_DG.Rows[S].HeaderCell.Value = Convert.ToString(S + 1);
                }


Когда ПЕРВЫЙ раз нажимаю на кнопку, то panel2 с dataGridView1 отображается с заполнеными данными, но строки не пронумерованы, а вот если скрыть панель и потом нажать опять кнопку, заполнив dataGridView1 другими или этими же данными, то о чудо отображается panel2 и в dataGridView1 строки уже пронумерованы))))

Как быть? В чем дело?

Заранее спасибо!!!
PM MAIL   Вверх
Gluttton
Дата 2.6.2011, 21:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

Репутация: 2
Всего: 54



Banderos, DataBind?


--------------------
Слава Україні!
PM MAIL   Вверх
Banderos
Дата 2.6.2011, 21:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 21.3.2011

Репутация: нет
Всего: нет



Gluttton, всмысле DataBind???

типо источник данных что ли:
Код

listData_DG.DataSource = tempTable;


так я источник задаю перед тем, как пытаюсь пронумеровать строки listData_DG
PM MAIL   Вверх
Gluttton
Дата 2.6.2011, 22:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

Репутация: 2
Всего: 54



Цитата(Banderos @  2.6.2011,  21:41 Найти цитируемый пост)
так я источник задаю перед тем, как пытаюсь пронумеровать строки listData_DG 

Я могу ошибаться, но ситуация примерно следующая.
Строки нумеруются на сервере, а отображается dataGrivView на клиенте и конечно же ничего не значет, о том, что же там произвошло на сервере.
Так вот нужно каким то образом связать данные сервера с данными на клиенте.

В общем как то так.

Но я могу и ошибаться smile .


--------------------
Слава Україні!
PM MAIL   Вверх
Banderos
Дата 3.6.2011, 06:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 21.3.2011

Репутация: нет
Всего: нет



Gluttton, так самое интересное в том, что если скрыть панель и затем кликнуть на кнопку, и панель сделать опять видимой, то строки уже пронумерованы, вот в чем дело. 

Gluttton, ваш вариант можно было бы рассмотреть, если бы стоки совсем не нумеровались, а так, только в первый раз не срабатывает, а во все следующие разы - работает. 

Это сообщение отредактировал(а) Banderos - 3.6.2011, 06:20
PM MAIL   Вверх
Gluttton
Дата 3.6.2011, 06:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

Репутация: 2
Всего: 54



Banderos, ну нет, так нет.

Я собственно говоря, к чему этот разговор про DataBind завел.
У меня есть страница, на которой среди всего прочего, есть DropDownList и DataSource:
Код

                    <asp:DropDownList 
                        id="dropDownListBreakageProductID" 
                        runat="server"
                        DataSourceID="dataSourceProduct"
                        DataTextField="product"
                        DataValueField="id" />


                    <asp:SqlDataSource 
                        id="dataSourceProduct" 
                        runat="server">
                    </asp:SqlDataSource>

И для того, что бы у меня все работало как положено, я в Page_Load страницы, кроме всего остального, выполняю следующий код:
Код

                    dataSourceProduct.ProviderName = "FirebirdSql.Data.FirebirdClient";
                    dataSourceProduct.ConnectionString = dataAccessLayer.GetConnectionString ();
                    dataSourceProduct.SelectCommand = 
                                                      "select " +
                                                          "id, " +
                                                          "product_type || ' №' || number as product " +
                                                   "from product;";
        
                    dataSourceProduct.DataBind ();

dataAccessLayer - это объект пользователського типа данных инкапсулирующий работу с БД и в данном примере не важен.

Вот я и подумал, что может быть и вашем случае, нечто похожее.


--------------------
Слава Україні!
PM MAIL   Вверх
Banderos
Дата 3.6.2011, 07:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 21.3.2011

Репутация: нет
Всего: нет



Gluttton, спасибо, попробую и тут сделать что то подобное.

Но все же интересно, что ни у кого не было такого глюка???
PM MAIL   Вверх
Gluttton
Дата 4.6.2011, 08:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

Репутация: 2
Всего: 54



Banderos, не знаю, на сколько это точный пример, но тем не менее:
Код

<%@ Page Language="C#" Inherits="DataGrid.Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html>
<head runat="server">
    <title>Default</title>
</head>
<body>
    <form id="form" runat="server">
        <asp:Panel id="panel" runat="server" Visible="false">
            <asp:GridView 
                id="gridView" 
                runat="server"
                AutoGenerateColumns="false"
                EnableViewState="true">
                <Columns>
                    <asp:TemplateField HeaderText="Labels" >
                        <asp:ItemTemplate>
                            <asp:Label
                                id="label"
                                runat="server"
                                text="Label"/>
                            </asp:ItemTemplate>            
                    </asp:TemplateField>            
                </Columns>            
            </asp:GridView>
        </asp:Panel>
        <asp:Button id="button" runat="server" Text="Show panel" OnClick="buttonClicked" />
    </form>
</body>
</html>


Код

using System;
using System.Web;
using System.Web.UI;
using System.Collections;

namespace DataGrid
{
    public partial class Default : System.Web.UI.Page
    {
        public virtual void buttonClicked (object sender, EventArgs args)
        {
            ArrayList arrayList = new ArrayList {
                "label",
                "label",
                "label",
                "label",
                "label"
            };            
            gridView.DataSource = arrayList;            
            //gridView.DataBind ();
            
            gridView.Columns[0].HeaderText = "Header";
            //gridView.DataBind ();
            
            panel.Visible = true;
        }
    }
}


Поочередно раскомментировав gridView.DataBind (); в разных местах - можно наблюдать различное поведение, в том числе и поднятое в вопросе (текст отображается "со второго раза").


--------------------
Слава Україні!
PM MAIL   Вверх
Gluttton
Дата 4.6.2011, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

Репутация: 2
Всего: 54



Пожалуй, вот так пример будет выглядеть более удачно:
Код

using System;
using System.Web;
using System.Web.UI;
using System.Collections;

namespace DataGrid
{
    public partial class Default : System.Web.UI.Page
    {
        protected void Page_Load (object sender, EventArgs e)
        {
            ArrayList arrayList = new ArrayList {
                "label",
                "label",
                "label",
                "label",
                "label"
            };

            gridView.DataSource = arrayList;

            gridView.DataBind ();
        }

        public virtual void buttonClicked (object sender, EventArgs args)
        {
            gridView.Columns[0].HeaderText = "Header";
            
            //gridView.DataBind ();

            panel.Visible = true;
        }
    }
}


Комментированием и разкомментированием girdView.DataBind() в buttonClicked можно достигать изменений с первого или со второго раза.


--------------------
Слава Україні!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
Partizan
PashaPash

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, Partizan, PashaPash.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | .NET для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0722 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.