Paging (Sayfalama) ve Sorting (Sıralama) Özellikleri

Eyl 06, 2013

Paging(Sayfalama)

Gridview(Izgara görünüm)'ın AllowPaging(Sayfalama İzni) özelliği True olarak ayarlanarak kontrole sayfalama yeteneği kazandırılmış olur. PageSize(Sayfa Boyutu)özelliği ile sayfa başına kaç kayıt gösterileceği belirlenebilir. Eğer PageSize özelliği kullanılmazsa Gridview varsayılan olarak her sayfada 10 kayıt gösterir.

Sorting(Sıralama)

Gridview'in AllowSorting(Sıralama İzni) özelliği True olarak ayarlandığında kontrolün sayfalama yapılan verilerine sıralama özelliği eklenmiş olur. Bu özellik eklendiği zaman hangi sütuna tıklanırsa ona göre sıralama yapar.

Uygulama

Aşağıaki uygulama, örnek bir veritabanına bağlanarak gridview kontrolünde paging ve sorting özelliklerinin gösterilmesi için yapılmıştır.

<asp:GridView ID="GridView1" runat="server" AllowPaging="TRUE" AllowSorting="TRUE"
 AutoGenerateColumns = "false" OnPageIndexChanging="GridView1_PageIndexChanging"
 OnSorting="GridView1_Sorting" PageSize="4" >
 <Columns>
    <asp:BoundField DataField="ad" HeaderText="İsim" SortExpression="ad" />
    <asp:BoundField DataField="soyad" HeaderText="Soyisim" SortExpression="soyad"/>
    <asp:BoundField DataField="adres" HeaderText="Adres"  />
    <asp:BoundField DataField="bolum" HeaderText="Bölüm"  />
 </Columns>
</asp:GridView>

AutoGenerateColumns(Otomatik Oluşturulmuş Kolon) özelliğine False(Yanlış) değeri verildiğinde kolonlara verilecek özellikler kullanıcı tarafından berlilenebilir. Eğer True(Doğru) değeri verilseydi Gridview kolonları veritabanınki kolonların tamamını kapsayacak, veritabınında görünen ismi ile görünecek ve otomatik olarak bütün kolonlara sıralama özelliği eklenmiş olacaktı. Bu özelliğe False değeri verildiği için Columns(Kolonlar) alanı açılmıştır ve veritabanından alınması istenen kolonlar bu alana tek tek eklenmiştir. DataField (Veri Alanı) ’e, veritabanında sütunlara verilen isimler yazılmıştır. HeaderText (Başlık Metni) ’e, sütunlarda görünmesi istenen isimler yazılmıştır. SortExpression(Sıralama İşareti)’a ise veritabanında bulunan sütunların ismi yazılmıştır ve bu değer sıralama için tıklandığındaGridView1_Sorting fonksiyonuna gider. Böylelikle sıralamanın hangi sütuna göre yapılacağı SortExpression’dan anlaşılır. Bu örnekte Sıralama özelliği İsim ve Soyisimsütunlarına verilmiştir. Bu yüzden İsim ve Soyisim tıklanabilir, Adres ve Bölüm ise tıklanamaz durumdadır. Ayrıca PageSize özelliğine değer olarak 4 verildiği için her sayfada 4 tane kayıt gösterilmektedir.

  • GridView1_PageIndexChanging fonksiyonunun çalıştırdığı kod aşağıda gösterilmiştir.

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

Bu fonksiyon Gridview'e sayfalamanın nasıl yapılması gerektiği belirlenmiştir.
  • GridView1_Sorting fonksiyonunun çalıştırdığı kod aşağıda gösterilmiştir.

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

Burada sıralamanın nasıl yapılacağı belirtilmiştir. Eğer değerler artan sıradaysa azalan, azalan sıradaysa artan şekilde değiştirilerek sıralama yapılacaktır.

  • SortGridView fonksiyonunun çalıştırdığı kod aşağıda gösterilmiştir.

private void SortGridView(string sortExpression, string direction)
    {
        DataTable dt = GetData().Tables[0];
        DataView dv = new DataView(dt);
        dv.Sort = sortExpression + direction;
        GridView1.DataSource = dv;
        GridView1.DataBind();
    }

Verilerin veritabanından alındığında ilk olarak nasıl sıralandığı bu fonksiyonla belirtiliyor. Burada veriler veritabanından alındığı şekilde yani azalan veya artan olmadan sıralanır.

  • GridViewSortDirection fonksiyonunun çalıştırdığı kod aşağıda gösterilmiştir.

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

Bu fonksiyon sıralanmak istenen verilerin artan değerde mi yoksa azalan değerde mi olduğunu kontrol eder.

Veri tabanına bağlanmak için gereken kod ise aşağıda gösterilmiştir. 

protected void Page_Load(object sender, EventArgs e)
    {
        GridView1.DataSource = GetData();
        GridView1.DataBind();     
    }

  • GetData fonksiyonunun içindeki kod aşağıda gösterilmiştir.

public Database GetData()
    {
        Database db = DatabaseFactory.CreateDatabase("ornek");
        DataSet ds = db.ExecuteDataSet(CommandType.Text, "SELECT * FROM gridview"); 
        return ds;
    }