0

我正在使用 asp.net gridview,而对于分页,我正在使用中继器控件。

但我的分页看起来像这样

在此处输入图像描述

我想要的是它应该看起来像这样

在此处输入图像描述

我在其中填充寻呼机的代码如下所示

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">
4

1 回答 1

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();
}
于 2014-11-25T05:01:31.600 回答