2016-05-04 12 views
0

ich unten Ereignis bin mit Zahlen für das Hinzufügen zu den Listenseiten ArtikelVermeidung von negativen Zahlen in Listenelemente

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()); 

     int limit = lastnumber - 5; 
     for (int i = limit; i <= pagecount; i++) 
     { 
      if (i < lastnumber && i > 1) 
      { 
       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(); 
    } 

Es funktioniert wie wenn die letzte Nummer 45 dann ist es jetzt 40 41 42 43 44 45. erzeugt das Problem, wenn die letzte Nummer 6 oder < 5 oder sogar negative Zahlen enthält, sollte Repeater mit Session binden ["orignalpages"]; was enthält 1 2 3 4 5 ... Der obige Code funktioniert nicht so. Es fügt den Listenelementen negative Zahlen hinzu. Bitte helfen Sie mir !!!

+0

Warum speichern Sie ganze Zahlen als Strings, um sie später wieder in Ganzzahlen umzuwandeln? –

Antwort

1

Hallo gesetzt hatte vielleicht ich Ihre Frage bin misundersting, aber sie sagte, wie if last number contains 6 or < 5 or even negative numbers, it should bind repeater with Session["orignalpages"];

dann sollte nicht Ihre Logik ist so zu sein: -

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

Ihr Limit ist niedriger als 1, so dass Sie es explizit zu 1.

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()); 

    int limit = lastnumber - 5; 

    ////////////////////////////////////////////////////// 
    if (limit < 1) limit = 1; //set the limit explicit to 1 
    ////////////////////////////////////////////////////// 

    for (int i = limit; i <= pagecount; i++) 
    { 
     if (i < lastnumber && i > 1) 
     { 
      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

es zeigt leere Werte, wenn die letzte Nummer 1 oder weniger als 5 – Nida

+0

@Nida vielleicht könnten Sie Ihren Code aus ASPX, wo Sie Ihre Ausgabe erstellen? – Pazi01

Verwandte Themen