Paging
Релиб
Форумы       Участники    Календарь    Кто он-лайн?
Добро пожаловать, гость ( Вход | Регистрация )
        



Paging Expand / Collapse
Автор
Сообщение
13.10.2006 12:33
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 09.06.2008 16:24
Сообщ.: 96, Visits: 873
Пытаюсь разбить на страницы таблицу datagrid,но чего та не выходит. Вот шапка:

<asp:datagrid id="dgData" runat="server" Width="100%" Height="148px" BorderColor="Black" PagerStyle-PageButtonCount="2"
     PagerStyle-Mode="NumericPages" OnPageIndexChanged="dbData_PageIndexChanged" PageSize="5"
     AllowPaging="True" GridLines="Vertical" CellPadding="4" AllowCustomPaging="True" AutoGenerateColumns="False"
     AlternatingItemStyle-BackColor="#cccc99" ItemStyle-BackColor="#ffffff" HeaderStyle-BackColor="#ffff66"
     style="Z-INDEX: 103; LEFT: 8px; POSITION: absolute; TOP: 456px">.......

....

И метод dbData_PageIndexChanged:

protected void dbData_PageIndexChanged(Object sender, DataGridPageChangedEventArgs e)

{

dgData.CurrentPageIndex = e.NewPageIndex;

dgData.DataBind();

}

Только почему та отображается только номер 1 снизу тобишь как будто второй страницы и нет, хотя данных точно на две страницы. Чего та не хватает или я чего та не так делаю? Порылся в MSDN,там ещё определяется какой та интерфейс ICollection,зачем?

Надеюсь на помощь, спасибо.

Сообщ. #905646
13.10.2006 12:59
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

администратор
Last Login: 13.11.2007 13:41
Сообщ.: 4 421, Visits: 49 251
AllowCustomPaging="False"?
Сообщ. #905648
13.10.2006 13:13
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 09.06.2008 16:24
Сообщ.: 96, Visits: 873
В этом случае ваще ошибку выдает.
Сообщ. #905651
13.10.2006 13:54
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

администратор
Last Login: 13.11.2007 13:41
Сообщ.: 4 421, Visits: 49 251
где ты впервые "биндишь" свой грид?

dgData.DataSource=...;
dgData.DataBind();

и какую ошибку выдает

Сообщ. #905657
13.10.2006 14:42
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 09.06.2008 16:24
Сообщ.: 96, Visits: 873
Я взял код из http://msdn2.microsoft.com/en-us/library/system.web.ui.webcontrols.datagridpagerstyle.aspx

т.е. теперь:

<asp:datagrid id="dgData" runat="server" AllowPaging="True"
            PageSize="10"
            PagerStyle-Mode="NumericPages"
            PagerStyle-HorizontalAlign="Right"
            OnPageIndexChanged="dbData_PageIndexChanged"
            BorderColor="black"
            BorderWidth="1"
            GridLines="Both"
            CellPadding="3"
            CellSpacing="0"
            Font-Name="Verdana"
            Font-Size="8pt"
            HeaderStyle-BackColor="#aaaadd"
            AlternatingItemStyle-BackColor="#eeeeee">

Ошибка:AllowCustomPaging must be true and VirtualItemCount must be set for a DataGrid with ID dgData when AllowPaging is set to true and the selected datasource does not implement ICollection.

а биндю вот так:

private void Page_Load(object sender, System.EventArgs e)

{

        if(!Page.IsPostBack)

             {

             this.FillDataGrid();

             }

}

private void FillDataGrid()

{

    string strText="";

      if(this.DropDownList1.SelectedValue=="0")

          {

strText="select number,fio,post,tel,responses,activ,descript from posts,employees where idNum=idKey";

           }

           else

           {

                if(this.DropDownList1.SelectedValue=="1")

                       {

strText="select number,fio,post,tel,responses,activ,descript from posts,employees where idNum=idKey and activ=1";

                        }

                  else

                     {

                             if(this.DropDownList1.SelectedValue=="2")

                                     {

strText="select number,fio,post,tel,responses,activ,descript from posts,employees where idNum=idKey and activ=0";

                                        }

                      }

                 }

OleDbCommand objCmd=new OleDbCommand(strText,this.Conn);

OleDbDataReader objReader;

try

{

objCmd.Connection.Open();

objReader=objCmd.ExecuteReader();

this.dgData.DataSource=objReader;

this.dgData.DataBind();

objReader.Close();

objCmd.Connection.Close();

OleDbDataAdapter myCommand=new OleDbDataAdapter("select post from posts",this.Conn);

DataSet ds=new DataSet();

myCommand.Fill(ds,"posts");

ddPost.DataSource = ds.Tables["posts"];

ddPost.DataTextField = "post";

ddPost.DataValueField = "post";

ddPost.DataBind(); //<<<<<<<<<<<<<<<<<<<<тута

ddPost.Items.Add("Выберите должность.");

this.ddPost.SelectedIndex=ddPost.Items.Count-1;

objCmd.Connection.Close();

}

catch (Exception e)

{

this.lblMessage.Text=e.Message.ToString();

}

this.tbFName.Text="";

this.tbTlf.Text="";

this.tbResp.Text="";

}

Мне кстати сдается что в этом как раз и дело(в смысле databind()), хотя странно ,если делать ссылку в виде стрелок,то стрелки не отображаются в виде ссылок,почему? Значит неправильно параметры datagrid задал?

Сообщ. #905663
13.10.2006 14:59
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 09.06.2008 16:24
Сообщ.: 96, Visits: 873
Сорри, не правильно указал где биндит

try

{

objCmd.Connection.Open();

objReader=objCmd.ExecuteReader();

this.dgData.DataSource=objReader;

this.dgData.DataBind();//<<<<<<тута

..............

Сообщ. #905664
13.10.2006 15:18
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

администратор
Last Login: 13.11.2007 13:41
Сообщ.: 4 421, Visits: 49 251
ошибка в источнике данных, OleDbDataReader не возвращает кол-ва строк, поэтому у тебя и получается одна страница, равная макс. размеру.

Либо меняй OleDbDataReader на что-нибудь что "implement ICollection" (вроде DataAdapter), либо переделай используй полный код из примера MSDN

Сообщ. #905668
13.10.2006 16:16
Supreme Being

Supreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme BeingSupreme Being

участник
Last Login: 09.06.2008 16:24
Сообщ.: 96, Visits: 873
Да уж, вот это закручено,а если у меня запрос к двум таблицам что указывать вторым параметром в DataAdapter.Fill()

там же название таблицы должно быть или  мне мучиться создавать две таблица в DataSet, заполнять их,создавать зависимость между ними,это ж ваще!!!!!!!!1

Соо