使用转发器控件在asp.net gridview中进行分页

时间:2014-11-25 04:44:59

标签: c# asp.net .net gridview custom-paging

我正在使用asp.net gridview和分页我正在使用转发器控件。

但我的分页看起来像这样

enter image description here

我想要的是它应该是这样的

enter image description here

我填写寻呼机的代码如下所示

private void PopulatePager(int recordCount, int currentPage)
{
    double dblPageCount = (double)((decimal)recordCount / decimal.Parse((1).ToString()));
    int pageCount = (int)Math.Ceiling(dblPageCount);
    List<ListItem> pages = new List<ListItem>();
    if (pageCount > 0)
    {
        pages.Add(new ListItem("First", "1", currentPage > 1));
        for (int i = 1; i <= pageCount; i++)
        {
            pages.Add(new ListItem(i.ToString(), i.ToString(), i != currentPage));
        }
        pages.Add(new ListItem("Last", pageCount.ToString(), currentPage < pageCount));
    }
  //  aa.Controls.Add(
    System.Web.UI.HtmlControls.HtmlGenericControl g = new System.Web.UI.HtmlControls.HtmlGenericControl();


    rptPager.DataSource = pages;
    rptPager.DataBind();
}

任何帮助都将受到高度赞赏

我的转发器控制标记正在跟随

   <ul class="pagination">
       <li>
        <asp:LinkButton CssClass="pagination"   ID="lnkPage" runat="server" Text = '<%#Eval("Text") %>' CommandArgument = '<%# Eval("Value") %>' Enabled = '<%# Eval("Enabled") %>' OnClick = "Page_Changed"></asp:LinkButton>
       </li> </ul>
    </ItemTemplate>
    </asp:Repeater>
    <ul id="aa"  runat="server" class="pagination">

1 个答案:

答案 0 :(得分:2)

您可以更改页面填充以在列出的页码之前和/或之后添加“...”,然后只有在您看不到页面范围的第一页或最后一页时才有逻辑你想表现出来。如果currentPage和pageCount是准确的,下面的代码应生成适当的页面列表项,以显示所需的页面范围,在本例中为4。

int pagesToShow = 4;
int minPage = Math.Max(1, currentPage - (pagesToShow / 2));
int maxPage = Math.Min(pageCount, minPage + pagesToShow);
if (minPage > 1)
    pages.Add(new ListItem("...", (minPage - 1).ToString(), false));
for (int i = minPage; i <= maxPage; i++)
{
    pages.Add(new ListItem(i.ToString(), i.ToString(), i != currentPage));
}
if (maxPage < pageCount)
    pages.Add(new ListItem("...", (maxPage + 1).ToString(), false));

编辑所以你的最终方法就变成了:

private void PopulatePager(int recordCount, int currentPage)
{
    double dblPageCount = (double)((decimal)recordCount / decimal.Parse((1).ToString()));
    int pageCount = (int)Math.Ceiling(dblPageCount);
    List<ListItem> pages = new List<ListItem>();
    if (pageCount > 0)
    {
        pages.Add(new ListItem("First", "1", currentPage > 1));
        int pagesToShow = 4;
        int minPage = Math.Max(1, currentPage - (pagesToShow / 2));
        int maxPage = Math.Min(pageCount, minPage + pagesToShow);
        if (minPage > 1)
            pages.Add(new ListItem("...", (minPage - 1).ToString(), false));
        for (int i = minPage; i <= maxPage; i++)
            pages.Add(new ListItem(i.ToString(), i.ToString(), i != currentPage));
        if (maxPage < pageCount)
            pages.Add(new ListItem("...", (maxPage + 1).ToString(), false));
        pages.Add(new ListItem("Last", pageCount.ToString(), currentPage < pageCount));
    }
    System.Web.UI.HtmlControls.HtmlGenericControl g = new System.Web.UI.HtmlControls.HtmlGenericControl();
    rptPager.DataSource = pages;
    rptPager.DataBind();
}