Uğur Umutluoğlu

Yazılım Teknolojileri Günlüğü

Ben de 1 yıl öncesine kadar öyleydim ama blogengine çok yamuk yaptı bana :) Şimdilik memnunum bu yenilikten :)

  • RSS
  • Twitter
  • Facebook
  • Google+
  • Linkedin
  • Tumblr
  • Formspring
  • Kitablog

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();

}


*
ASP.NET MVP