VS中的DataGrid相信大家都很熟悉了, 功能十分的强大,唯一觉得有点遗憾的是分页导航,效果不是十分的完美,所以自己写了个自定义导航按钮。代码如下:
(数据表引用数据库Northwind中的products表。)
VS2003
DataGridNavig.aspx
< body MS_POSITIONING = " GridLayout " > < form id = " Form1 " method = " post " runat = " server " > < table > < tr > < td > < asp:DataGrid id = " myDataGrid " runat = " server " Width = " 320px " Height = " 184px " AllowSorting = " True " ShowFooter = " True " PageSize = " 5 " AllowPaging = " True " BorderColor = " #E7E7FF " BorderStyle = " None " BorderWidth = " 1px " BackColor = " White " CellPadding = " 3 " GridLines = " Horizontal " > < SelectedItemStyle Font - Bold = " True " ForeColor = " #F7F7F7 " BackColor = " #738A9C " ></ SelectedItemStyle > < AlternatingItemStyle BackColor = " #F7F7F7 " ></ AlternatingItemStyle > < ItemStyle ForeColor = " #4A3C8C " BackColor = " #E7E7FF " ></ ItemStyle > < HeaderStyle Font - Bold = " True " ForeColor = " #F7F7F7 " BackColor = " #4A3C8C " ></ HeaderStyle > < FooterStyle ForeColor = " #4A3C8C " BackColor = " #B5C7DE " ></ FooterStyle > < Columns > < asp:TemplateColumn HeaderText = " ID " > < ItemTemplate > <% #DataBinder.Eval(Container.DataItem, " ProductID " ) %> </ ItemTemplate > </ asp:TemplateColumn > < asp:TemplateColumn HeaderText = " ProductName " > < ItemTemplate > <% #DataBinder.Eval(Container.DataItem, " ProductName " ) %> </ ItemTemplate > </ asp:TemplateColumn > < asp:TemplateColumn HeaderText = " UnitPrice " > < ItemTemplate > <% #DataBinder.Eval(Container.DataItem, " UnitPrice " , " {0:C} " ) %> </ ItemTemplate > </ asp:TemplateColumn > </ Columns > < PagerStyle HorizontalAlign = " Right " ForeColor = " #4A3C8C " BackColor = " #E7E7FF " Mode = " NumericPages " ></ PagerStyle > </ asp:DataGrid > </ td > </ tr > < tr > < td align = " right " > 共 <%= this .myDataGrid.PageCount - 1 %> 页 第 <%= this .myDataGrid.CurrentPageIndex + 1 %> 页 < asp:LinkButton ID = " btnFirst " Runat = " server " ></ asp:LinkButton > < asp:LinkButton ID = " btnNext " Runat = " server " ></ asp:LinkButton > < asp:LinkButton ID = " btnPrev " Runat = " server " ></ asp:LinkButton > < asp:LinkButton ID = " btnLast " Runat = " server " ></ asp:LinkButton > 转 < asp:TextBox ID = " txtPageIndex " Runat = " server " Width = " 32px " ></ asp:TextBox > 页 < asp:Button ID = " btnRect " Text = " 转 " Runat = " server " Width = " 24px " ></ asp:Button > </ td > </ tr > </ table > </ form > </ body >DataGridNavig.aspx.cs
private void Page_Load( object sender, System.EventArgs e) ... { if(!IsPostBack) ...{ this.GridBund();//绑定数据 this.btnFirst.Text= "首页"; this.btnNext.Text= "下一页"; this.btnPrev.Text = "上一页"; this.btnLast.Text = "最后页"; } } private void GridBund() ... { string stringSql = "select productID,productName,UnitPrice from products"; DataSet ds = SQLHelper.ExecuteDataSet(stringSql); this.myDataGrid.DataSource = ds.Tables[0].DefaultView; this.myDataGrid.DataBind(); } /**/ /// <summary> /// 分页 /// </summary> private void myDataGrid_PageIndexChanged( object source,DataGridPageChangedEventArgs e) ... { try ...{ this.myDataGrid.CurrentPageIndex = e.NewPageIndex; } catch ...{ this.myDataGrid.CurrentPageIndex = 0; } finally ...{ this.GridBund(); } } /**/ /// <summary> /// 首页 /// </summary> private void btnFirst_Click( object sender, System.EventArgs e) ... { this.myDataGrid.CurrentPageIndex = 0; this.GridBund(); } /**/ /// <summary> /// 下一页 /// </summary> private void btnNext_Click( object sender, System.EventArgs e) ... { if(this.myDataGrid.CurrentPageIndex < (this.myDataGrid.PageCount - 1)) ...{ this.myDataGrid.CurrentPageIndex += 1; this.GridBund(); } } /**/ /// <summary> /// 上一页 /// </summary> private void btnPrev_Click( object sender, System.EventArgs e) ... { if(this.myDataGrid.CurrentPageIndex > 0) ...{ this.myDataGrid.CurrentPageIndex -= 1; this.GridBund(); } } /**/ /// <summary> /// 最后页 /// </summary> private void btnLast_Click( object sender, System.EventArgs e) ... { this.myDataGrid.CurrentPageIndex = (this.myDataGrid.PageCount -1); this.GridBund(); } /**/ /// <summary> /// 转到第几页 /// </summary> private void btnRect_Click( object sender, System.EventArgs e) ... { int num = Int32.Parse(this.txtPageIndex.Text); if(num <= 0 || num > (this.myDataGrid.PageCount -1)) return; else ...{ this.myDataGrid.CurrentPageIndex = (num - 1); this.GridBund(); } }如果有更好的方法,大家一起交流!^ ^