2016-05-03 9 views
-1

私はカスタムコントロールとして作成したページ番号の生成に以下のコード行を使用しています。私はそれにリピータコントロールを追加しました。 PopulatePager()メソッドを使用してページ番号をリピータに設定しています。 私は2つのボタンを追加しました.1つは次のページ番号セット用で、もう1つは前のページ番号セット用です。実際には49の合計ページ番号がありますが、すべてのページ番号を表示するのには適していません。今度は、< < 1 2 3 4 5 >>のように一度に5つの数字のセットのみを表示する必要があります。 >>ボタンをクリックすると、< < 6 7 8 9 10 >>というようになります。私は2つのイベントlnknext_Click()とlnkprev_Click()を作成しました。前のボタンの問題

次のボタンは完全に機能していますが、前のボタンが正しく機能していません。例えば用 我々は< < 22 23 24 25 26である場合には>>次に< <ボタンをクリックすると、それは再び>> < < 16 17 18 19 20 21が表示され、それをクリックする< < 1 2 3 4 5を表示> >の代わりに< < 10 11 12 13 14 15 >> ... 私を助けてください!

 public void PopulatePager() 
     { 
     int recordCount = TotalPages; 
     if (PageSizeChanged != null) 
     { 
      HiddenField hd = new HiddenField(); 

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

      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 <= pageCount; i++) 
       { 
        if (i <= 5) 
        { 
         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()); 


      } 
      if (Session["pages"] != null) 
      { 
       rptPager.DataSource = Session["pages"]; 
       rptPager.DataBind(); 
      } 
      else 
      { 
       rptPager.DataSource = pages; 
       rptPager.DataBind(); 
      } 

      Session["lastnumber"] = 5; 
      Session["pagecount"] = pageCount; 
      Session["orignalpages"] = pages; 

     } 
    } 

    protected void lnkprev_Click(object sender, EventArgs e) 
    { 
     List<ListItem> pages = new List<ListItem>(); 
     int pagecount = Convert.ToInt32(Session["pagecount"].ToString()); 
     int lastnumber = Convert.ToInt32(Session["lastnumber"].ToString()); 
     if (lastnumber > pagecount) 
     { 
      Session["lastnumber"] = pagecount - 5; 
      lastnumber = pagecount - 5; 
      Session["pagecount"] = pagecount; 
      Session["orignalpages"] = pages; 

     } 
     else 
     { 

      Session["lastnumber"] = 1; 
      lastnumber = 1; 
      Session["pagecount"] = pagecount; 
      Session["orignalpages"] = pages; 
     } 

     int limit = lastnumber + 5; 
     for (int i = lastnumber; i <= pagecount; i++) 
     { 
      if (i <= limit && i > 0) 
      { 
       pages.Add(new ListItem(i.ToString(), i.ToString(), i != PageIndex)); 
      } 
      else 
      { 
       rptPager.DataSource = Session["orignalpages"]; 
       rptPager.DataBind(); 
      } 
     } 
     Session["lastnumber"] = limit; 
     Session["pagecount"] = pagecount; 

     Session["pages"] = pages; 

     rptPager.DataSource = pages; 
     rptPager.DataBind(); 
    } 
    protected void lnknext_Click(object sender, EventArgs e) 
    { 
     List<ListItem> pages = new List<ListItem>(); 
     int pagecount = Convert.ToInt32(Session["pagecount"].ToString()); 
     int lastnumber = Convert.ToInt32(Session["lastnumber"].ToString()); 
     if (lastnumber > pagecount) 
     { 
      Session["lastnumber"] = 1; 
      lastnumber = 1; 
      Session["pagecount"] = pagecount; 
      Session["orignalpages"] = pages; 

     } 


     int limit = lastnumber + 4; 
     for (int i = lastnumber; i <= pagecount; i++) 
     { 
      if (i <= limit) 
      { 
       pages.Add(new ListItem(i.ToString(), i.ToString(), i != PageIndex)); 
      } 
      else 
      { 
       rptPager.DataSource = Session["orignalpages"]; 
       rptPager.DataBind(); 
      } 
      Session["lastnumber"] = limit; 
      Session["pagecount"] = pagecount; 

      Session["pages"] = pages; 

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

答えを – Nida

答えて

1

この問題では、「DataTable」JavaScript機能を使用できます。 https://www.datatables.net/を参照してください。

これでは、以下のコードでテーブルIDを指定するだけです。

$(document).ready(function(){ 
    $('#myTable').DataTable(); 
}); 

さらなるヘルプが必要な場合はお知らせください。

おかげ

+0

おかげで、この質問に何か問題があります...私は、動的にストアドプロシージャを経由して改ページに関連するすべての値を取得メートル。それは私のために働くでしょう – Nida

+0

はい。発行しない。 –

+0

これは動作しますか? –