En iyi yanıtlayıcılar
GridView de sayfalama sonucunda aldığım hata

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
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
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...
- Yanıt Olarak Öneren Altan Özdemir 22 Haziran 2018 Cuma 08:16
-
-
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...
- Düzenleyen MuratAKSARAY 22 Haziran 2018 Cuma 08:35
-
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
-
-
index değerinin eksi birden büyük ve DataKeys Count değerinden küçük olduğunu kontrol etmeniz sorunu çözecektir...
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.
Sorunuzun yanıtı bu ise "Yanıt olarak işaretle"yerek siz de forumun işleyişine katkıda bulununuz...
Ömer ÖRNEK
-
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