一、首先要将gridview设置成可以分页,然后我们在增加如下代码:
<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" Width="98%" AllowPaging="True" OnPageIndexChanging="GridView1_PageIndexChanging" PageSize="20">
<Columns>
<asp:BoundField DataField="UserName" HeaderText="登陆用户名" >
<ItemStyle CssClass="griditem" />
<HeaderStyle CssClass="gridhead" />
</asp:BoundField>
<asp:BoundField DataField="Name" HeaderText="真实姓名">
<ItemStyle CssClass="griditem" />
<HeaderStyle CssClass="gridhead" />
</asp:BoundField>
<asp:BoundField DataField="PostName" HeaderText="职位" >
<ItemStyle CssClass="griditem" />
<HeaderStyle CssClass="gridhead" />
</asp:BoundField>
<asp:BoundField DataField="OrgName" HeaderText="组织" >
<ItemStyle CssClass="griditem" />
<HeaderStyle CssClass="gridhead" />
</asp:BoundField>
<asp:BoundField DataField="RoleName" HeaderText="角色" >
<ItemStyle CssClass="griditem" />
<HeaderStyle CssClass="gridhead" />
</asp:BoundField>
<asp:BoundField DataField="StateStr" HeaderText="当前状态" >
<ItemStyle CssClass="griditem" />
<HeaderStyle CssClass="gridhead" />
</asp:BoundField>
<asp:TemplateField HeaderText="操作">
<ItemTemplate>
<asp:LinkButton ID="LinkButtonEdit" runat="server" CommandArgument='<%# Eval("UserID") %>' OnClick="LinkButtonEdit_Click">编辑</asp:LinkButton>
<asp:LinkButton ID="LinkButtonDelete" runat="server" CommandArgument='<%# Eval("UserID") %>' OnClick="LinkButtonDelete_Click">删除</asp:LinkButton>
</ItemTemplate>
<ItemStyle CssClass="griditem" />
<HeaderStyle CssClass="gridhead" />
</asp:TemplateField>
</Columns>
<EmptyDataTemplate>
<table border='0' cellpadding='0' cellspacing='0' style='border-right: coral 1px dotted;border-top: coral 1px dotted; border-left: coral 1px dotted; border-bottom: coral 1px dotted;background-color: #ffffff;200px;height:55px;'><tr><td align='center' style="height: 53px"><font color='coral'><b>没有任何数据<b></font></B></B></td></tr></table>
</EmptyDataTemplate>
<PagerTemplate>
<table border="0" cellpadding="0" cellspacing="0" style=" 99%; height: 15px">
<tr>
<td style=" 100px; height: 13px">
</td>
<td style=" 100px; height: 13px">
<div style=" 286px; height: 7px; font-size:12px;">
总共
<%=RecordCount%>
条记录 当前第
<%#((GridView)Container.NamingContainer).PageIndex+1%>/<%#((GridView)Container.NamingContainer).PageCount %>
页
</div>
</td>
<td style=" 100px; height: 13px">
<div style=" 252px; height: 8px; text-align: right">
<asp:LinkButton ID="FirstPage" runat="server" CommandArgument="First" CommandName="Page" Enable="<%# ((GridView)Container.NamingContainer).PageIndex != 0 %>">第一页</asp:LinkButton>
<asp:LinkButton ID="PreviousPage" runat="server" CommandArgument="Prev" CommandName="Page" Enable="<%# ((GridView)Container.NamingContainer).PageIndex != 0 %>">上一页</asp:LinkButton>
<asp:LinkButton ID="NextPage" runat="server" CommandArgument="Next" CommandName="Page" Enable="<%# ((GridView)Container.NamingContainer).PageIndex != ((GridView)Container.NamingContainer).PageCount - 1 %>">下一页</asp:LinkButton>
<asp:LinkButton ID="LastPage" runat="server" CommandArgument="Last" CommandName="Page" Enable="<%# ((GridView)Container.NamingContainer).PageIndex != ((GridView)Container.NamingContainer).PageCount - 1 %>">最后一页</asp:LinkButton>
<asp:TextBox ID="TextGotoPage" runat="server" CssClass="pageeditbox"></asp:TextBox>
<asp:Button ID="PageGo" causesvalidation="False" commandargument="-1" commandname="Page" runat="server" CssClass="pagebutton" Text="Go" />
</div>
</td>
<td style=" 100px; height: 13px">
<div style=" 266px; height: 1px">
</div>
</td>
</tr>
</table>
</PagerTemplate>
</asp:GridView>
<Columns>
<asp:BoundField DataField="UserName" HeaderText="登陆用户名" >
<ItemStyle CssClass="griditem" />
<HeaderStyle CssClass="gridhead" />
</asp:BoundField>
<asp:BoundField DataField="Name" HeaderText="真实姓名">
<ItemStyle CssClass="griditem" />
<HeaderStyle CssClass="gridhead" />
</asp:BoundField>
<asp:BoundField DataField="PostName" HeaderText="职位" >
<ItemStyle CssClass="griditem" />
<HeaderStyle CssClass="gridhead" />
</asp:BoundField>
<asp:BoundField DataField="OrgName" HeaderText="组织" >
<ItemStyle CssClass="griditem" />
<HeaderStyle CssClass="gridhead" />
</asp:BoundField>
<asp:BoundField DataField="RoleName" HeaderText="角色" >
<ItemStyle CssClass="griditem" />
<HeaderStyle CssClass="gridhead" />
</asp:BoundField>
<asp:BoundField DataField="StateStr" HeaderText="当前状态" >
<ItemStyle CssClass="griditem" />
<HeaderStyle CssClass="gridhead" />
</asp:BoundField>
<asp:TemplateField HeaderText="操作">
<ItemTemplate>
<asp:LinkButton ID="LinkButtonEdit" runat="server" CommandArgument='<%# Eval("UserID") %>' OnClick="LinkButtonEdit_Click">编辑</asp:LinkButton>
<asp:LinkButton ID="LinkButtonDelete" runat="server" CommandArgument='<%# Eval("UserID") %>' OnClick="LinkButtonDelete_Click">删除</asp:LinkButton>
</ItemTemplate>
<ItemStyle CssClass="griditem" />
<HeaderStyle CssClass="gridhead" />
</asp:TemplateField>
</Columns>
<EmptyDataTemplate>
<table border='0' cellpadding='0' cellspacing='0' style='border-right: coral 1px dotted;border-top: coral 1px dotted; border-left: coral 1px dotted; border-bottom: coral 1px dotted;background-color: #ffffff;200px;height:55px;'><tr><td align='center' style="height: 53px"><font color='coral'><b>没有任何数据<b></font></B></B></td></tr></table>
</EmptyDataTemplate>
<PagerTemplate>
<table border="0" cellpadding="0" cellspacing="0" style=" 99%; height: 15px">
<tr>
<td style=" 100px; height: 13px">
</td>
<td style=" 100px; height: 13px">
<div style=" 286px; height: 7px; font-size:12px;">
总共
<%=RecordCount%>
条记录 当前第
<%#((GridView)Container.NamingContainer).PageIndex+1%>/<%#((GridView)Container.NamingContainer).PageCount %>
页
</div>
</td>
<td style=" 100px; height: 13px">
<div style=" 252px; height: 8px; text-align: right">
<asp:LinkButton ID="FirstPage" runat="server" CommandArgument="First" CommandName="Page" Enable="<%# ((GridView)Container.NamingContainer).PageIndex != 0 %>">第一页</asp:LinkButton>
<asp:LinkButton ID="PreviousPage" runat="server" CommandArgument="Prev" CommandName="Page" Enable="<%# ((GridView)Container.NamingContainer).PageIndex != 0 %>">上一页</asp:LinkButton>
<asp:LinkButton ID="NextPage" runat="server" CommandArgument="Next" CommandName="Page" Enable="<%# ((GridView)Container.NamingContainer).PageIndex != ((GridView)Container.NamingContainer).PageCount - 1 %>">下一页</asp:LinkButton>
<asp:LinkButton ID="LastPage" runat="server" CommandArgument="Last" CommandName="Page" Enable="<%# ((GridView)Container.NamingContainer).PageIndex != ((GridView)Container.NamingContainer).PageCount - 1 %>">最后一页</asp:LinkButton>
<asp:TextBox ID="TextGotoPage" runat="server" CssClass="pageeditbox"></asp:TextBox>
<asp:Button ID="PageGo" causesvalidation="False" commandargument="-1" commandname="Page" runat="server" CssClass="pagebutton" Text="Go" />
</div>
</td>
<td style=" 100px; height: 13px">
<div style=" 266px; height: 1px">
</div>
</td>
</tr>
</table>
</PagerTemplate>
</asp:GridView>
红色的部分就是自定义的分页代码,其实LinkButton里的CommandArgument参数就是gridview的当前页,CommandName表示触发的命令,这些都不能改。
注意里面有个RecordCount的变量,他是public类型,是从后台传过来的,表示记录的条数,测试的时候别忘了这个变量啊。
二、分页的代码
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
{
SetGridPage(sender, e,DtSource)
}
{
SetGridPage(sender, e,DtSource)
}
SetGridPage的函数
/// <summary>
/// 分页处理
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
/// <param name="dt"></param>
public void SetGridPage(object sender, GridViewPageEventArgs e,DataTable dt)
{
GridView theGrid = (GridView)sender; // refer to the GridView
int newPageIndex = 0;
GridViewRow pagerRow = theGrid.BottomPagerRow;
//GridViewRow pagerRow = theGrid.Controls[0].Controls[theGrid.Controls[0].Controls.Count - 1] as GridViewRow; // refer to PagerTemplate
//GridView较DataGrid提供了更多的API,获取分页块可以使用BottomPagerRow 或者TopPagerRow,当然还增加了HeaderRow和FooterRow
if (-2 == e.NewPageIndex)//点击按钮的事件
{
TextBox txtNewPageIndex = null;
if (null != pagerRow)
{
txtNewPageIndex = (TextBox)pagerRow.FindControl("TextGotoPage"); // refer to the TextBox with the NewPageIndex value
}
if (null != txtNewPageIndex && txtNewPageIndex .Text !="")
{
newPageIndex = int.Parse(txtNewPageIndex.Text) - 1; // get the NewPageIndex
}
else
{
newPageIndex = 0;
}
}
else
{
//当点击分页连接的时候
newPageIndex = e.NewPageIndex;
}
// 处理超出范围的分页
newPageIndex = newPageIndex < 0 ? 0 : newPageIndex;
newPageIndex = newPageIndex >= theGrid.PageCount ? theGrid.PageCount - 1 : newPageIndex;
((TextBox)pagerRow.FindControl("TextGotoPage")).Text = Convert.ToString(newPageIndex + 1);
//帮定数据源
theGrid.PageIndex = newPageIndex;
theGrid.DataSource = dt;
theGrid.DataBind();
}
/// 分页处理
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
/// <param name="dt"></param>
public void SetGridPage(object sender, GridViewPageEventArgs e,DataTable dt)
{
GridView theGrid = (GridView)sender; // refer to the GridView
int newPageIndex = 0;
GridViewRow pagerRow = theGrid.BottomPagerRow;
//GridViewRow pagerRow = theGrid.Controls[0].Controls[theGrid.Controls[0].Controls.Count - 1] as GridViewRow; // refer to PagerTemplate
//GridView较DataGrid提供了更多的API,获取分页块可以使用BottomPagerRow 或者TopPagerRow,当然还增加了HeaderRow和FooterRow
if (-2 == e.NewPageIndex)//点击按钮的事件
{
TextBox txtNewPageIndex = null;
if (null != pagerRow)
{
txtNewPageIndex = (TextBox)pagerRow.FindControl("TextGotoPage"); // refer to the TextBox with the NewPageIndex value
}
if (null != txtNewPageIndex && txtNewPageIndex .Text !="")
{
newPageIndex = int.Parse(txtNewPageIndex.Text) - 1; // get the NewPageIndex
}
else
{
newPageIndex = 0;
}
}
else
{
//当点击分页连接的时候
newPageIndex = e.NewPageIndex;
}
// 处理超出范围的分页
newPageIndex = newPageIndex < 0 ? 0 : newPageIndex;
newPageIndex = newPageIndex >= theGrid.PageCount ? theGrid.PageCount - 1 : newPageIndex;
((TextBox)pagerRow.FindControl("TextGotoPage")).Text = Convert.ToString(newPageIndex + 1);
//帮定数据源
theGrid.PageIndex = newPageIndex;
theGrid.DataSource = dt;
theGrid.DataBind();
}