Skip to main content

GridView’e Programatik Veri Bağlamada Sayfalama ve Sıralama İşlemleri

GridView’e programatik olarak veri bağladığında eğer sayfalama(paging) ve sıralama(sorting) işlemi yapılırsa gridin bu işlemlerini ne şekilde yapacağını da yine programatik olarak belirlemek gerekecektir. Sayfalama işlemi için PageIndexChanging, sıralama işlemi için ise Sorting evetleri kullanılmaktadır. Sayfalama işlemi için yazılacak event metodunda yapılacak işlemler gridin yeni sayfa indeksini belirlemek iken, sıralama işleminde durumlar biraz daha karışıktır. Sorting event’i tetiklendiğinde grid kontrolü her defasında sıralama yönünü Ascending olarak getireceği için kullanıcının tersten sıralama (Descending) işlemi yapması durumunda bizim ekstra kodlarla bu durumu ele almamız gerekecektir. Burada sıralama yönünü geçici olarak bir yerde depolamak gerekecektir ki; en uygun yerin ViewState olduğunu söyleyebilirim. Aşağıdaki kodlarda gridview kontrolünün sayfalama ve sıralama işlemlerini nasıl ele alabileceğimiz görüntülenmektedir. Yorum satırları size yardımcı olacaktır.

void GridView1_PageIndexChanging(object sender, GridViewPageEventArgs e)

{

    // e parametresinden gelen index numarasını gridview’ın PageIndex’ine atayıp

    // verileri tekrar bağlamak sayfalama işlemi için yeterli olacaktır

    GridView1.PageIndex = e.NewPageIndex;

    GridView1.DataBind();

}

void GridView1_Sorting(object sender, GridViewSortEventArgs e)

{

    // İlk sort işlemi yapıldığında çalışır

    if (ViewState[“siralananKolon”] == null)

    {

        ViewState.Add(“siralananKolon”, e.SortExpression);

        ViewState.Add(“siralamaYonu”, “ASC”);

    }

    else

    {

        // Aynı kolon 2. kez sıralandığında çalışır

        if (ViewState[“siralananKolon”].ToString() == e.SortExpression)

        {

            if (ViewState[“siralamaYonu”].ToString() == “ASC”)

                ViewState[“siralamaYonu”] = “DESC”;

            else

                ViewState[“siralamaYonu”] = “ASC”;

        }

        // Farklı bir kolon sıralandığında çalışır

        else

        {

            ViewState[“siralananKolon”] = e.SortExpression;

            ViewState[“siralamaYonu”] = “ASC”;

        }

    }

    // Veriyi tekrar yüklemeden önce sıralanacak alanı ve sıralama kriterini belirlemek gerekir.

    // DataTable nesnesini tekrar elde edip, görünümünü(DataView) değiştiriyoruz

    DataTable dt = (DataTable)GridView1.DataSource;

    dt.DefaultView.Sort = ViewState[“siralananKolon”].ToString() +

” “ + ViewState[“siralamaYonu”].ToString();

    GridView1.DataBind();

}

GridView’e Programatik Veri Bağlamada Sayfalama ve Sıralama İşlemleri” hakkında 2 yorum

  1. yazı için çok teşekkür ederim.
    entity data model ile sıralama işlemini yapmak istediğimizde bir sorun ortaya çıkıyor. gridview e kayna olarak verdiğimiz entity listesi generic list tründe ama sorting işlemi datatable olarak ayarlanmış bunu nasıl çözebiliriz.internetten biraz araştırma yaptım linq result larını datatable la çeviri işlemi üzerine ama pek sonuç alamadım

  2. Generic liste olarak aldığın nesnede OrderBy ve OrderByDescending metotları var. Bu metotlarla memory üzerinde sıralama yapılabiliyor. Bunları dene istersen. List’i doğrudan DataTable’a çeviren bir metot yok diye biliyorum

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir