GridView etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
GridView etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

10 Şubat 2011 Perşembe

GridView Paging ve Sorting(Sayfalama ve Sıralama)

En sık kullandığımız veri gösterme kaynaklarından biridir GridView. Verileri gösterirken de, kullanıcıya bazı işlevsellikler katmak isteyebiliriz. Şimdi bunları kısaca size anlatmaya çalışacağım.

GridView'da verileri getirirken DataSource kullanmışsak (yani veri kaynağı olarak, gridview'in kendi wizardını kullanmışsak), sevgili Visual Studio bize kendi kodlarını yazıp, sorting ve paging'i hiç bize zahmet vermeden kendisi yazıyor. Peki, ya biz verileri code-behind tarafında veritabanına bağlanıp çekiyorsak?

Bu durumda kendi kodlarımızı kendimiz yazacağız. Oldukça basit ve az kod yazacağımızdan, rahatlıkla anlaşılacaktır zaten.

Bu işlemleri yapmadan önce, unutmamamız gereken şey, GridView'ın özelliklerinden AllowPaging ve AllowSorting'i true yapmak. Ayrıca sıralama işlemleri için, belirlediğimiz her bir boundfield'ın SortExpression özelliğine o kolonun ismini vermek.


<asp:BoundField DataField="Name" HeaderText="Adı ve soyadı" SortExpression=" Name" />
<asp:BoundField DataField="TCKimlikNo" HeaderText="TC Kimlik No" SortExpression=" TCKimlikNo" />


Paging:

Sayfalama için yapmamız gereken, GridView'in PageIndexChanging eventini tetiklemek. Daha sonra da şu kodları yazdığımız taktirde, istediğimiz sayfalamayı yapacaktır.

 
    protected void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        GridView1.PageIndex = e.NewPageIndex;
        GridView1.DataSource = dt;
        GridView1.DataBind();
    }

Hatırlatma: GridView'da bir sayfada, gösterilmek istenen veri sayısını, GridView'in özelliklerinden PageSize'ini değiştirerek yapabilirsiniz..

Sorting:
 Sıralama için de yine aynı şekilde Sorting eventinin tetiklenmesi gerekir. Daha sonra da sıralamanın azalan mı artan mı olduğunu belirlemek için bir property tanımlayıp, oradan sıralama bilgisini aldım. Daha sonra da DataView'in Sort isimli üyesini çağırıp, sıralama şeklini(azalan-artan) belirterek GridView'i istediğimiz şekilde sıralamış olduk.


    protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
    {
        string sortType = "";
        if (GridViewSortDirection == SortDirection.Ascending)
        {
            GridViewSortDirection = SortDirection.Descending;
            sortType = " DESC";
        }
        else
        {
            GridViewSortDirection = SortDirection.Ascending;
            sortType = " ASC";
        }

        if (dt != null)
        {
            DataView dv = new DataView(dt);
            dv.Sort = e.SortExpression + " " + sortType;

            GridView1.DataSource = dv;
            GridView1.DataBind();
        }

    }
    public SortDirection GridViewSortDirection
    {
        get
        {
            if (ViewState["sortDirection"] == null)
                ViewState["sortDirection"] = SortDirection.Ascending;
            return (SortDirection)ViewState["sortDirection"];
        }
        set { ViewState["sortDirection"] = value; }
    }

Hatırlatma: Yukarıda da belirttiğim gibi, sıralamanın gerçekleşmesi için, GridView'da göstermek istediğimiz alanların(BoundField) SortExpression özelliğini dolu geçmemiz gerekir.

17 Kasım 2010 Çarşamba

GridView Kontrolu

Repeater ve DataList 'ten farkli olarak, bir diger veri getirme kontrolu de GridView'dir. Digerlerinden farkli olarak bize daha cok fonksiyonellik getirir. Verileri siralamak(sorting), sayfalama(paging), verilerde update, delete, edit, insert islemlerini bize kolayca saglamamiza olanak tanir. Gordugunuz uzere diger veri kontrollerine gore daha islevseldir, fakat ozellikle css yedirirken vs. ufak tefek problemler cikarabiliyor bize. Simdi kisaca GridView'den bahsedelim.

GridView'in de DataList gibi yine uzerinde smart tagi bulunmaktadir. Buradan GridView'in icinde hazir yazilmis cssleri kullanabilir(autoformat), veri kaynagi verebilir, yeni kolonlar girip, var olan kolonlarda degisiklik yapabiliriz.

Buraya kadar her sey normal ilerliyor. Asil yapilacak islemler veri eklettikten sonra onumuze cikiyor. Rastgele bir database uzerinden veri baglayalim ve farki hissedelim.

Gordugunuz uzere veriler baglandiktan sonra, smarttagimizde ekstra ozellikler cikmakta. Ustte yazdiklarima ek olarak kolonlarda ekleme, degistirme islemleri yapabilir, paging,sorting,editing,deleting ve selection islemleri yapabilmekteyiz. Ve bunlari yaparken de kod yazmamiz gerekmeyecek, otomatik olarak arkada yazilmis kodlar kullanilacak ve biz bu islemleri yapabilecegiz. Tabi ki ornegin delete,edit islemlerinde veritabaniyla iliskiyi biz kuracagiz yine. Sadece gorunum olarak hazir geliyor bize islemler.

Source'u actigimiz zaman da GridView ile ilgili bazi kodlarin yazildigini goruyoruz. Bazi durumlarda, el ile bazi islemleri halletmekte zorluk cekebiliriz, o yuzden bazi template ozelliklerini, yazimini vs. buradan belirtecegim. Bu durumda GridView uzerinde yapamayacagimiz islem kalmayacak.

Oncelikle, BoundField ile karsilasacagiz source kodlarimizi incelersek. BoundField bize database uzerinden getirilen her bir kolondaki veri icin degisiklik veya grid'e baglamak konusunda bize kolaylik saglar. ItemTemplate'lerimiz sayesinde veritabanindan gelen tablodaki kolonlar uzerinde oynamamizi saglar. Kolon basligini degistirme, grid uzerinde belli bir noktada gosterme, yazi tipleri buyuklukleri vs. gibi konularda fiziksel degisim imkani tanir bize. Yine diger kontrollerde oldugu gibi GridView'da da ItemTemplate,FooterTemplate,HeaderTemplate, EditItemTemplate ..vs. gibi templateler bulunmaktadir. Onlari tekrar yazmayacagim, DataList ve Repeater makalelerinden ayrintili inceleyebilirsiniz. Ayrica Grid uzerinden update, insert, delete gibi islemlerinin nasil yapildigini da daha once yazdigim makalemden ulasabilirsiniz.