2015-06-23 65 views
0

我已經寫了下面的代碼如何控制分頁中的頁碼?

public void UpdatePageLables(int aPageCount) 
    { 
    PageCount = (int)Math.Ceiling((decimal)aPageCount/PageSize); 
    int recordCount = PageCount; 
    if (PageSizeChanged != null) 
    { 
     HiddenField hd = new HiddenField(); 

     int current; 
     current = PageIndex; 
     int pre; 
     int Next; 
     double dblPageCount = (double)((decimal)recordCount/decimal.Parse(lstPageSize.SelectedValue)); 
     int pageCount = PageCount; 

     List<ListItem> pages = new List<ListItem>(); 
     if (pageCount > 0) 
     { 
      // pages.Add(new ListItem("First", "1", PageIndex > 1)); 
      current = PageIndex; 
      pre = --PageIndex; 
      PageIndex = current; 

      // pages.Add(new ListItem("Previous", pre.ToString(), PageIndex > 1)); 

      for (int i = 1; i <= aPageCount; i++) 
      { 
       pages.Add(new ListItem(i.ToString(), i.ToString(), i != PageIndex)); 
      } 
      int currentPage = PageIndex; 
      Next = ++PageIndex; 
      PageIndex = currentPage; 
      //pages.Add(new ListItem("Next", Next.ToString(), PageIndex < pageCount)); 
      // pages.Add(new ListItem("Last", pageCount.ToString(), PageIndex < pageCount)); 

      hd.Value = (pre.ToString()); 


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

    } 

} 

線和ASCX文件

<div class="pagination"> 
    <asp:LinkButton ID="LinkButton1" runat="server" CausesValidation="false" OnClick="imgPre_Click" 
    data-rel="tooltip" data-original-title="previous page.">&laquo;</asp:LinkButton> 
     <asp:Repeater ID="rptPager" OnItemDataBound="rptPager_ItemDataBound" runat="server"> 
    <ItemTemplate> 
     <asp:LinkButton ID="lnkPage" runat="server" Text = '<%#Eval("Text") %>' CommandArgument = '<%# Eval("Value") %>' Enabled = '<%# Eval("Enabled") %>' OnClick = "Page_Changed"></asp:LinkButton> 
    </ItemTemplate> 
    </asp:Repeater> 
     <asp:LinkButton ID="LinkButton2" runat="server" CausesValidation="false" OnClick="imgnext_Click" 
     data-rel="tooltip" data-original-title="next page."> &raquo; 
    </asp:LinkButton> 
       <div class="page-size"><span>Page Size: &nbsp; </span> 
     <asp:DropDownList runat="server" ID="lstPageSize" AutoPostBack="true" style="float:right" 
     OnSelectedIndexChanged="lstPageSize_SelectedIndexChanged"> 

      <asp:ListItem Text="5" Value="5"></asp:ListItem> 
      <asp:ListItem Text="10" Value="10"></asp:ListItem> 
      <asp:ListItem Text="15" Value="15" Selected="True"></asp:ListItem> 
      <asp:ListItem Text="25" Value="25" ></asp:ListItem> 
      <asp:ListItem Text="50" Value="50"></asp:ListItem> 
      <asp:ListItem Text="75" Value="75"></asp:ListItem> 
      <asp:ListItem Text="100" Value="100"></asp:ListItem> 
      <asp:ListItem Text="150" Value="150"></asp:ListItem> 
     </asp:DropDownList> 
      </div> 
    </div>  

現在我想只顯示前七個號鏈接時,就會有百個鏈接數和頁面的其餘部分數字鏈接不應顯示。 當用戶點擊...按鈕時,應該顯示從8到14的頁碼,並且應該隱藏1到7,等等。 請幫助我!

回答

0

你應該只填寫你想要的頁面的頁面列表。所以,如果你想7頁(3左選擇指數和3有權選擇指數),你可以這樣做:

for (int i = PageIndex - 3; i <= PageIndex + 3; i++) 
{ 
    if (i > 0 && i <= aPageCount) { 
    { 
     //i is still inside total range of pages, so page can be added 
     pages.Add(new ListItem(i.ToString(), i.ToString(), i != PageIndex)); 
    } 
} 

如果你想要的頁面其他列表(如PageIndex的7之後下一個),你需要改變的循環。

+0

但是這段代碼沒有隱藏其餘的數字。 – Nida

+0

它不會隱藏其餘的數字。它根本不會將它們添加到列表中,因此不需要隱藏。頁面列表將只是您想要查看的數字。 – Dacker