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 はリピーターです。

これにより、出力が次のように表示されます。 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 に答える