如何在ASP.Net Repeater控件中实现NumericFirstLast分页 [英] How to implement NumericFirstLast paging in the ASP.Net Repeater control
本文介绍了如何在ASP.Net Repeater控件中实现NumericFirstLast分页的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
Hello All,
我想在GridView中提供的Repeater控件中实现NumericFirstLast类型分页。如果我得到任何帮助,那就太好了。您能否告诉我是否可以使用以下类型的分页进行自定义分页。
例如,
首页上一页1 2 3 4 5 6 ...下一页尾页
解决方案
您好我认为这可能对您有所帮助,我忘记了我搜索过的链接如此粘贴代码。
第1步:在你的aspx中添加以下内容。
< asp:datalist cellpadding = 5 repeatdirection = < span class =code-keyword>水平 runat = server id = dlPager xmlns:asp = #unknown >
OnItemCommand =dlPager_ItemCommand>
< itemtemplate >
< asp:linkbutton 已启用 = <% #Eval( 已启用)%> runat = server id = lnkPageNo text = <% #Eval( 文字)%> >
CommandArgument ='<% #Eval( Value)%>' CommandName =PageNo> < / asp:linkbutton >
< / itemtemplate >
< / asp:datalist >
获取数据集后调用此方法并将输出绑定到Datalist
public 列表< listitem> GeneratePager( int totalRowCount, int pageSize, int currentPage)
{
int totalLinkInPage = 5 ;
int totalPageCount =( int )Math.Ceiling((十进制)totalRowCount / pageSize);
int startPageLink = Math.Max(currentPage - ( int )数学。 Floor(( decimal )totalLinkInPage / 2 ), 1 < /跨度>);
int lastPageLink = Math.Min(startPageLink + totalLinkInPage - 1 ,totalPageCount);
if ((startPageLink + totalLinkInPage - 1 )> totalPageCount)
{
lastPageLink = Math.Min(currentPage +( int )Math.Floor (( decimal )totalLinkInPage / 2 ),totalPageCount);
startPageLink = Math.Max(lastPageLink - totalLinkInPage + 1 , 1 );
}
列表< listitem> pageLinkContainer = new 列表< listitem>();
if (startPageLink!= 1 )
pageLinkContainer.Add ( new ListItem( First, 1,currentPage!= 1 ));
for ( int i = startPageLink; i < = lastPageLink; i ++)
{
pageLinkContainer.Add( new ListItem(i.ToString(),i.ToString (),currentPage!= i));
}
if (lastPageLink!= totalPageCount)
pageLinkContainer.Add( new ListItem( Last,totalPageCount.ToString(),currentPage!= totalPageCount));
return pageLinkContainer;
}
< / listitem > < / listitem > < / listitem >
这是事件代码
protected void dlPager_ItemCommand( object source, DataListCommandEventArgs e)
{
try
{
if (e.CommandName == PageNo)
{
pageNo = Convert.ToInt32(e.CommandArgument);
// 此处绑定网格
}
}
catch (例外情况)
{
}
}
我在下面的文章中找到了我的问题的确切答案 -
http://www.webblogsforyou.com/custom-datapagerrepeater-asp-net-repeater-control-with-datapager-example/ [ ^ ]
Hello All,
I want to implement NumericFirstLast type pagination in the Repeater control which is available in GridView. It would be great if i get any help on this. As well as could you please tell me whether custom paging is possible with below type of pagination.
For Example,
First Previous 1 2 3 4 5 6... Next Last
解决方案
Hi I think this might help you, I forgot link which i searched so pasting the code.
Step 1: add Following in your aspx.
<asp:datalist cellpadding="5" repeatdirection="Horizontal" runat="server" id="dlPager" xmlns:asp="#unknown"> OnItemCommand="dlPager_ItemCommand"> <itemtemplate> <asp:linkbutton enabled="<%#Eval("Enabled") %>" runat="server" id="lnkPageNo" text="<%#Eval("Text") %>"> CommandArgument='<%#Eval("Value") %>' CommandName="PageNo"></asp:linkbutton> </itemtemplate> </asp:datalist>
after getting dataset call this method and bind output to Datalist
public List<listitem> GeneratePager(int totalRowCount, int pageSize, int currentPage) { int totalLinkInPage = 5; int totalPageCount = (int)Math.Ceiling((decimal)totalRowCount / pageSize); int startPageLink = Math.Max(currentPage - (int)Math.Floor((decimal)totalLinkInPage / 2), 1); int lastPageLink = Math.Min(startPageLink + totalLinkInPage - 1, totalPageCount); if ((startPageLink + totalLinkInPage - 1) > totalPageCount) { lastPageLink = Math.Min(currentPage + (int)Math.Floor((decimal)totalLinkInPage / 2), totalPageCount); startPageLink = Math.Max(lastPageLink - totalLinkInPage + 1, 1); } List<listitem> pageLinkContainer = new List<listitem>(); if (startPageLink != 1) pageLinkContainer.Add(new ListItem("First", "1", currentPage != 1)); for (int i = startPageLink; i <= lastPageLink; i++) { pageLinkContainer.Add(new ListItem(i.ToString(), i.ToString(), currentPage != i)); } if (lastPageLink != totalPageCount) pageLinkContainer.Add(new ListItem("Last", totalPageCount.ToString(), currentPage != totalPageCount)); return pageLinkContainer; } </listitem></listitem></listitem>
This is the event code
protected void dlPager_ItemCommand(object source, DataListCommandEventArgs e) { try { if (e.CommandName == "PageNo") { pageNo = Convert.ToInt32(e.CommandArgument); //Bind grid here } } catch (Exception ex) { } }
I found the exact answer to my question in following article-
http://www.webblogsforyou.com/custom-datapagerrepeater-asp-net-repeater-control-with-datapager-example/[^]
这篇关于如何在ASP.Net Repeater控件中实现NumericFirstLast分页的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文