|
|
|
Supreme 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,зачем? Надеюсь на помощь, спасибо.
|
|
|
|
|
Supreme Being
      
администратор
Last Login: 13.11.2007 13:41
Сообщ.: 4 421,
Visits: 49 251
|
|
| AllowCustomPaging="False"?
|
|
|
|
|
Supreme Being
      
участник
Last Login: 09.06.2008 16:24
Сообщ.: 96,
Visits: 873
|
|
| В этом случае ваще ошибку выдает.
|
|
|
|
|
Supreme Being
      
администратор
Last Login: 13.11.2007 13:41
Сообщ.: 4 421,
Visits: 49 251
|
|
| где ты впервые "биндишь" свой грид? dgData.DataSource=...; dgData.DataBind(); и какую ошибку выдает
|
|
|
|
|
Supreme 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 задал?
|
|
|
|
|
Supreme 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();//<<<<<<тута..............
|
|
|
|
|
Supreme Being
      
администратор
Last Login: 13.11.2007 13:41
Сообщ.: 4 421,
Visits: 49 251
|
|
| ошибка в источнике данных, OleDbDataReader не возвращает кол-ва строк, поэтому у тебя и получается одна страница, равная макс. размеру. Либо меняй OleDbDataReader на что-нибудь что "implement ICollection" (вроде DataAdapter), либо переделай используй полный код из примера MSDN
|
|
|
|
|
Supreme Being
      
участник
Last Login: 09.06.2008 16:24
Сообщ.: 96,
Visits: 873
|
|
| Да уж, вот это закручено,а если у меня запрос к двум таблицам что указывать вторым параметром в DataAdapter.Fill() там же название таблицы должно быть или мне мучиться создавать две таблица в DataSet, заполнять их,создавать зависимость между ними,это ж ваще!!!!!!!!1
|
|
| |