定制分页asp.net

时间:2012-04-26 10:35:07

标签: asp.net c#-4.0

我想实现自定义分页,其中页面编号显示为 上一页1 2 3 4 5 ... 25 26 27 28 29 30下一页。

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是转发器。

这会将输出显示为 上一页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下一页  但我希望它显示为上一页1 2 3 4 5 ... 25 26 27 28 29 30下一页。

谢谢,

1 个答案:

答案 0 :(得分: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);
      }
  }