2016-05-03 2 views
-1

Ich verwende die folgenden Codezeilen zum Generieren von Seitennummern für die Paginierung, die ich als benutzerdefiniertes Steuerelement erstellt habe. Ich habe Repeater-Kontrolle hinzugefügt. Ich bearbeite Repeater mit Seitenzahlen, indem ich die PopulatePager() Methode verwende. Ich habe zwei Schaltflächen hinzugefügt, eine für die nächsten Seitenzahlen und die zweite für die vorherigen Seitenzahlen. Tatsächlich habe ich insgesamt 49 Seitenzahlen, es sieht nicht gut aus, alle Seitennummern darin anzuzeigen. Jetzt müssen wir nur Satz von 5 Zahlen auf einmal zeigen wie < < 1 2 3 4 5 >>. wenn der Benutzer auf die Schaltfläche >> klickt, wird es wie folgt aussehen: < < 6 7 8 9 10 >> ... so weiter. Ich habe zwei Ereignisse erstellt: lnknext_Click() und lnkprev_Click().Probleme mit vorheriger Schaltfläche

Nächste Taste funktioniert einwandfrei, aber vorherige Taste funktioniert nicht richtig. für beispielsweise, wenn man bei < < 22 23 24 25 26 >> werden dann auf Klick < < Taste, wird es < < 16 17 18 19 20 21 >> dann auf einmal angezeigt werden darauf < < 1 2 3 4 5 zeigt> > statt < < 10 11 12 13 14 15 >> ... Bitte helfen Sie mir !!!

 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

ist etwas nicht in Ordnung mit dieser Frage – Nida

Antwort

1

Sie können "DataTable" Javascript-Funktionalität für dieses Problem verwenden. Bitte beziehen Sie sich auf https://www.datatables.net/.

In diesem müssen Sie nur Ihre Tabelle Id in unter Code geben.

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

Lassen Sie mich wissen, wenn Sie weitere Hilfe benötigen.

Dank

+0

danke für die Antwort ... Ich bin alle Werte immer dynamisch über gespeicherte Prozeduren im Zusammenhang mit Paginierung. wird es für mich funktionieren – Nida

+0

ja. Keine Frage. –

+0

Funktioniert das? –