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

}

30 Ekim 2007 Salı 16:34

Yorum - RSSYorumlar (0)

Kategori: ASP.NET

facebook'da Paylaş   twitter'da Paylaş   friendfeed'de Paylaş   del.icio.us'da Paylaş   stumpleupon'da Paylaş   Permalink

Bağlantılar



Takip Et

RSS Feed twitter friendfeed

Seminer/Webiner Programım

  • Seminer-WebinerADO.NET Entity Framework (Yıldız Teknik Üniversitesi)
    6 Mart 2010

  • Seminer-WebinerASP.NET 4.0 ile Gelen Yeni Özellikleri Yakından Tanıyın (Microsoft)
    18 Şubat 2010

  • Seminer-WebinerC# 4.0 ve Visual Basic 10 ile Uygulama Geliştirmenin Püf Noktaları (Microsoft)
    28 Ocak 2010

>> Etkinlik Takvimi