1

我想实现自定义分页,其中页码显示为 Prev 1 2 3 4 5...25 26 27 28 29 30 Next。

private void PopulatePager(int recordCount, int currentPage)
{
    double dblPageCount = (double)((decimal)recordCount / decimal.Parse(ddlPerPage.SelectedValue));
    int pageCount = (int)Math.Ceiling(dblPageCount);
    recdcnt = pageCount;
    List<ListItem> pages = new List<ListItem>();
    if (pageCount > 0)
    {
        ListItem lp = new ListItem("Previous", "1", currentPage > 1);
        lp.Attributes.Add("class", "pages previous");
        pages.Add(lp);
        //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));
            ListItem li = new ListItem(i.ToString(), i.ToString(), i != currentPage);
            li.Attributes.Add("class", "pages");


            pages.Add(li);
        }
        ListItem ll = new ListItem("Next", pageCount.ToString(), currentPage < pageCount);
        ll.Attributes.Add("class", "pages next");
        pages.Add(ll);
        //pages.Add(new ListItem("Last", pageCount.ToString(), currentPage < pageCount));
    }
    rptPager.DataSource = pages;
    rptPager.DataBind();
}

rptPager 是中继器。

这将输出显示为 Prev 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 Next 但我希望它显示为 Prev 1 2 3 4 5...25 26 27 28 29 30 下一个。

谢谢,

4

1 回答 1

0

编写逻辑以仅显示前 5 个页码,包括当前页和最后 5 个页码

  for (int i = 1; i <= pageCount; i++)
  {
      if ((i > currentPage - 5 && i <= currentPage) || (i > pageCount - 5))
      {
          // pages.Add(new ListItem(i.ToString(), i.ToString(), i != currentPage));
          ListItem li = new ListItem(i.ToString(), i.ToString(), i != currentPage);
          li.Attributes.Add("class", "pages");

          pages.Add(li);
      }
      else if (((ListItem)pages[pages.Count - 1]).Text != "...")
      {
          ListItem li = new ListItem("...",String.Empty);
          li.Attributes.Add("class", "pages");
          pages.Add(li);
      }
  }
于 2012-04-26T11:12:35.813 回答