none
GridView de sayfalama sonucunda aldığım hata RRS feed

  • Soru

  • merhaba;

    gridview de sayfalama yapıyorum yaklaşık 8000 kayıt içerisinde her sayfada 10 kayıt olacak şekilde listeliyorum, ama onuncu kaydı tıkladığımda aşağıdaki hata ile karşılaşıyorum, 

    Dizin aralık dışındaydı. Negatif bir değer olmamalı ve koleksiyonun boyutundan daha küçük olmalıdır.

    işlemleri yaptırdığım kod aşağıdaki gibidir.

    hatayı aldığım kısım aşağıda altı çizili olan kısımdır.


    void PersonelListesi() { fnk.Baglanti(); string komut = "SELECT * FROM PERSONEL_BILGI ORDER BY ID DESC"; SqlDataAdapter dAdpt = new SqlDataAdapter(komut, fnk.Baglanti()); DataSet ds = new DataSet(); dAdpt.Fill(ds); dt = ds.Tables[0]; gridPersonelListesi.DataSource = dt; gridPersonelListesi.DataBind(); fnk.BaglantiClose(); } protected void gridPersonelListesi_PageIndexChanging(object sender, GridViewPageEventArgs e) { int yeniSayfaIndex = e.NewPageIndex; gridPersonelListesi.PageIndex = yeniSayfaIndex; } protected void gridPersonelListesi_RowCommand(object sender, GridViewCommandEventArgs e) { int index = Convert.ToInt32(e.CommandArgument); int code = Int16.Parse(gridPersonelListesi.DataKeys[index].Value.ToString());// Hata Aldığım Kısım if (e.CommandName.Equals("detail")) { PersonelListesi(); IEnumerable<DataRow> query = from i in dt.AsEnumerable() where i.Field<int>("ID").Equals(code) select i; DataTable detailTable = query.CopyToDataTable<DataRow>(); DetailsView1.DataSource = detailTable; DetailsView1.DataBind(); System.Text.StringBuilder sb = new System.Text.StringBuilder(); sb.Append(@"<script type='text/javascript'>"); sb.Append("$('#currentdetail').modal('show');"); sb.Append(@"</script>"); ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "ModalScript", sb.ToString(), false); } }



    Ömer ÖRNEK

    22 Haziran 2018 Cuma 06:57

Yanıtlar

  • int index = Convert.ToInt32(e.CommandArgument);
    int code = 0;
    if (index > -1 && index < gridPersonelListesi.DataKeys.Count)
        code = Convert.ToInt32(gridPersonelListesi.DataKeys[index].Value);
    Bu düzenlemeyi yapın...

    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...

    • Yanıt Olarak İşaretleyen omrornk 22 Haziran 2018 Cuma 16:34
    22 Haziran 2018 Cuma 16:08

Tüm Yanıtlar

  • int code = Convert.ToInt32(gridPersonelListesi.DataKeys[index].Value??0);


    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...

    22 Haziran 2018 Cuma 07:54
  • int code = Convert.ToInt32(gridPersonelListesi.DataKeys[index].Value??0);


    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...

    olmadı bu yine aynı hata verdi

    Ömer ÖRNEK

    22 Haziran 2018 Cuma 08:26
  • Büyük ihtimalle index hatası alıyorsunuz. Hata mesajını paylaşmalısınız...

    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...

    22 Haziran 2018 Cuma 08:34
  • Büyük ihtimalle index hatası alıyorsunuz. Hata mesajını paylaşmalısınız...

    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...

    almış olduğum hata mesajı aşağıdaki gibidir.

    An exception of type 'System.ArgumentOutOfRangeException' occurred in mscorlib.dll but was not handled in user code
    
    Additional information: Dizin aralık dışındaydı. Negatif bir değer olmamalı ve koleksiyonun boyutundan daha küçük olmalıdır.


    Ömer ÖRNEK

    22 Haziran 2018 Cuma 10:17
  • index değerinin eksi birden büyük ve DataKeys Count değerinden küçük olduğunu kontrol etmeniz sorunu çözecektir...

    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...

    22 Haziran 2018 Cuma 13:04
  • index değerinin eksi birden büyük ve DataKeys Count değerinden küçük olduğunu kontrol etmeniz sorunu çözecektir...

    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...

    Hocam şuanda veritabanında 1800 kayıt var sayfalama yaptığım 10 sayfa halinde 10 satır listeliyor, ben 11. sayfadaki veriye ulaşmak istediğimde ( üç nokta (...) seçtiğimde) bu hatayı alıyorum.

    Ömer ÖRNEK

    22 Haziran 2018 Cuma 13:50
  • int index = Convert.ToInt32(e.CommandArgument);
    int code = 0;
    if (index > -1 && index < gridPersonelListesi.DataKeys.Count)
        code = Convert.ToInt32(gridPersonelListesi.DataKeys[index].Value);
    Bu düzenlemeyi yapın...

    Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...

    • Yanıt Olarak İşaretleyen omrornk 22 Haziran 2018 Cuma 16:34
    22 Haziran 2018 Cuma 16:08