您的位置:首页 > 其它

DataGrid自定义导航按钮

2007-09-29 13:14 197 查看
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();


}


}



如果有更好的方法,大家一起交流!^ ^
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: