如何在ASP.Net Repeater控件中实现NumericFirstLast分页 [英] How to implement NumericFirstLast paging in the ASP.Net Repeater control

查看:71
本文介绍了如何在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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆