GridView de karşımıza çıkan sorunlar
Asp.Net yazılımcıları olarak .net in bize sunmuş olduğu bileşenlerden hep faydalanırız. Bunların başında da elbette gridview’dir. Ama gridview ı kullanırken karşımıza bazen istemediğimiz sorunlarla karşılaşabilmekteyiz. Benim karşıma çıkan problemleri ve çözümlerini burada sizinle paylaşmak istedim.
1. Sayfalama (Paging) sorunu
The GridView ‘GridView1‘ fired event PageIndexChanging which wasn’t handled.
Eğer siz GridView’ın datasource nu kendiniz verdiğinizde ve sayfalama yapmasını istediğinizde yukarıdaki gibi hata mesajı alacaksınız. Bunun çözümü için yapmanız gereken GridView’ın PageIndexChanging metodunu eklemek ve fonksiyonu aşağıdaki gibi oluşturmak.
protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e) { this.GridView1.PageIndex = e.NewPageIndex; this.GridView1.DataBind(); }
yukarıdaki fonksiyonu ekledikten sonra sayfalama ile ilgili sorunu çözmüş olacaksınız.
2. Sıralama (Sorting) sorunu :
GridView daki bir başka sorun ise sıralamadır. Gene GridView ‘ın datasource unu kendimiz eklediğimiz zaman ve sıralama yapmasını istediğimizde aşağıdaki hata mesajı karşımıza gelecektir.
The GridView ‘GridView1’ fired event Sorting which wasn’t handled.
Bu hatayı aşmak için bi kaç fonksiyon ve dikkat etmemiz gereken bi nokta bulunmaktadır. Dikkat etmemiz gereken husus şudur;
- Eğer Datasource’ a eklenecek olan DataSet ise ilk önce bu DataSet’i DataTable ‘a dönüştürmemiz gerekmektedir.
DataSet DataSet1 = Pricing1.getPricings(); DataTable DataTable1 = DataSet1.Tables[0]; this.GridView1.DataSource = DataTable1; this.GridView1.DataBind();
Not : Pricing1.getPricings() adlı fonksiyonum dataset çevirmektedir.
Bilmeyenler için şunu söylemem gerektiğini düşünmekteyim. DataSet ‘in içinde birden çok tablo bulundurabilmektesiniz. Onun için bizim DataSetin içindeki tablolardan sadece bizim içini doldurduğumuz tabloyu dataTable’a atmaktır. Eğer biz DataSet’den DataTable’a dönüştürmez isek sıralama işlemini yapamayacağız.
Şimdi yapmamız gereken GridView’ın özelliklerinden “AllowSorting” e true (evet) diyip Events (fonksiyon) kısmına geçip “Sorting” fonksiyonunu oluşturmaktır. İlgili bütün fonksiyonlar aşağıdadır;
protected void GridView1_Sorting(object sender, GridViewSortEventArgs e) { DataTable dataTable = this.GridView1.DataSource as DataTable; if (dataTable != null) { DataView dataView = new DataView(dataTable); dataView.Sort = GetSortExpression(e.SortExpression); this.GridView1.DataSource = dataView; this.GridView1.DataBind(); } } private string GetSortExpression(string sortExpression) { if (sortExpression == GridViewSortExpression && GridViewSortDirection == "ASC") { GridViewSortDirection = "DESC"; } else { GridViewSortDirection = "ASC"; } GridViewSortExpression = sortExpression; return string.Format("{0} {1}", sortExpression, GridViewSortDirection); } private string GridViewSortDirection { get { return ViewState["SortDirection"] as string ?? "ASC"; } set { ViewState["SortDirection"] = value; } } private string GridViewSortExpression { get { return ViewState["SortExpression"] as string ?? string.Empty; } set { ViewState["SortExpression"] = value; } }
Yukarıdaki gibi kodları oluşturduğunuzda sıralama işlemindeki sorunu da halletmiş olacaksınız 🙂
Herhangi bir sorunuz olursa çekinmeden sorabilirsiniz 🙂
4 yorum bulunmaktadır - “GridView de karşımıza çıkan sorunlar”
Yorum Yapın
Etiketler
Son Yazılar
- Uzak sunucuda bulunan android cihaz ile otomasyon
- Mac’ de çoklu Java versiyon yönetimi
- İş yarar docker komutları
- Eski branchlerin git’ den silinmesi
- Kubernetes Süresi Dolmuş Sertifikaları Yenilemek
Son Yorumlar
- Hosting koşuşturması için
- Garanti Sanal Pos Kurulumu, Sorunlar ve Çözümler için
- Visual Studio Toolbox’a component(bileşen) eklenmesi için
- “File is too large for destination file system” hatasını gidermek için
- Php’de UTF-8 Türkçe karakter sorunu ve çözümü için
Bağlantılar
Arşivler
- Kasım 2021
- Eylül 2021
- Ağustos 2021
- Temmuz 2021
- Aralık 2020
- Kasım 2020
- Ekim 2020
- Eylül 2020
- Kasım 2017
- Mayıs 2017
- Mart 2017
- Şubat 2017
- Ocak 2017
- Nisan 2015
- Aralık 2014
- Mayıs 2014
- Eylül 2013
- Haziran 2013
- Şubat 2013
- Kasım 2012
- Ekim 2012
- Eylül 2012
- Mart 2012
- Şubat 2012
- Ocak 2012
- Aralık 2011
- Kasım 2011
- Ekim 2011
- Eylül 2011
- Temmuz 2011
- Haziran 2011
- Mayıs 2011
- Mart 2011
- Ocak 2011
- Aralık 2010
- Kasım 2010
- Ekim 2010
- Eylül 2010
- Ağustos 2010
- Temmuz 2010
- Haziran 2010
- Mayıs 2010
- Nisan 2010
- Mart 2010
- Şubat 2010
- Ocak 2010
- Haziran 2009
- Mayıs 2009
- Nisan 2009
- Mart 2009
Merhabalar,
“Herhangi bir sorunuz olursa çekinmeden sorabilirsiniz” demişsiniz buna dayanaraktan problemim için yardım talep ediyorum.
http://forum.ceviz.net/aspnet-silverlight-moonlight/81647-sorting-yapinca-gridview-deki-datakeyler-ayni-kaliyor.html
teşekkürler.
Kusura bakmayın birazcık geç cevap vermiş olacağım bu sorunuza 🙂 Bu yorumu yazdığınız sırada ben askerdeydim 🙂
Sorunuzun cevabına gelince : tam koda bakmak lazım ama sizin gridview’a verilerinizi datatable olarak göndermemenizden kaynaklanıyor olabilir. Verilerinizi DataTable ‘a ekleyin sonrada gridview’ın DataSource ‘una datatable i eşitleyin.
hatayı giderdim sayfa değişiyor fakat veriler gelmiyor 2. sayfada boş görünüyor sorun ne olabilir?
Page_Load() ederken if (!IsPostBack) { this.fillGridView(); } gibi demişseniz verileri getiremez. Sayfa postback edilirken ilgili fonksiyona yada DataBind’ a tekrar ulaşması gerekmekte.
Umarım doğru cevap olmuştur 🙂