GridView分页的实现
要在GridView中加入
//实现分页
AllowPaging="true"
//一页数据10行
PageSize="10"
// 分页时触发的事件
OnPageIndexChanging="gvwDesignationName_PageIndexChanging"
在服务器事件里
protected
void
gvwDesignationName_PageIndexChanging(
object
sender, GridViewPageEventArgs e) { gvwDesignationName.PageIndex
=
e.newIndex; bingDesignatioonName(); }
这里我给出一个通用显示分页的模板(网上搜的,自己给出注释)
<PagerTemplate>
当前第:
//((GridView)Container.NamingContainer)就是为了得到当前的控件
<asp:LabelID="LabelCurrentPage"runat="server"Text="<%#((GridView)Container.NamingContainer).PageIndex+1%>"></asp:Label>
页/共:
//得到分页页面的总数
<asp:LabelID="LabelPageCount"runat="server"Text="<%#((GridView)Container.NamingContainer).PageCount%>"></asp:Label>
页
//如果该分页是首分页,那么该连接就不会显示了.同时对应了自带识别的命令参数CommandArgument
<asp:LinkButtonID="LinkButtonFirstPage"runat="server"CommandArgument="First"CommandName="Page"
Visible='<%#((GridView)Container.NamingContainer).PageIndex!=0%>'>首页</asp:LinkButton>
<asp:LinkButtonID="LinkButtonPreviousPage"runat="server"CommandArgument="Prev"
CommandName="Page"Visible='<%#((GridView)Container.NamingContainer).PageIndex!=0%>'>上一页</asp:LinkButton>
//如果该分页是尾页,那么该连接就不会显示了
<asp:LinkButtonID="LinkButtonNextPage"runat="server"CommandArgument="Next"CommandName="Page"
Visible='<%#((GridView)Container.NamingContainer).PageIndex!=((GridView)Container.NamingContainer).PageCount-1%>'>下一页</asp:LinkButton>
<asp:LinkButtonID="LinkButtonLastPage"runat="server"CommandArgument="Last"CommandName="Page"
Visible='<%#((GridView)Container.NamingContainer).PageIndex!=((GridView)Container.NamingContainer).PageCount-1%>'>尾页</asp:LinkButton>
转到第
<asp:TextBoxID="txtNewPageIndex"runat="server"Width="20px"Text='<%#((GridView)Container.Parent.Parent).PageIndex+1%>'/>页
//这里将CommandArgument即使点击该按钮e.newIndex值为3
<asp:LinkButtonID="btnGo"runat="server"CausesValidation="False"CommandArgument="-2"
CommandName="Page"Text="GO"/>
</PagerTemplate>
对应该事件中代码为
protectedvoidgvwDesignationName_PageIndexChanging(objectsender,GridViewPageEventArgse)
{
//得到该控件
GridViewtheGrid=senderasGridView;
intnewPageIndex=0;
if(e.NewPageIndex==-3)
{
//点击了Go按钮
TextBoxtxtNewPageIndex=null;
//GridView较DataGrid提供了更多的API,获取分页块可以使用BottomPagerRow或者TopPagerRow,当然还增加了HeaderRow和FooterRow
GridViewRowpagerRow=theGrid.BottomPagerRow;
if(pagerRow!=null)
{
//得到text控件
txtNewPageIndex=pagerRow.FindControl("txtNewPageIndex")asTextBox;
}
if(txtNewPageIndex!=null)
{
//得到索引
newPageIndex=int.Parse(txtNewPageIndex.Text)-1;
}
}
else
{
//点击了其他的按钮
newPageIndex=e.NewPageIndex;
}
//防止新索引溢出
newPageIndex=newPageIndex<0?0:newPageIndex;
newPageIndex=newPageIndex>=theGrid.PageCount?theGrid.PageCount-1:newPageIndex;
//得到新的值
theGrid.PageIndex=newPageIndex;
//重新绑定
bingDesignatioonName();
}