Gridview'da satırları seçilen kolona göre sıralama(Sorting)

by isadogan 19. November 2010 19:57

Çoğumuz gridview içinde satırları istenen kolona sıralamak için aşadığaki gibi bir kod kullanmışızdır.


GridView1.DataSource = new Book().GetBooks().OrderBy(b => b.BookDescription);

Yukarıdaki kodun sonucunda normal bir şekilde tek bir kolona göre sıralamayı bitirdik peki birden fazla kolonları sıralamak istediğimizde işlemleri nasıl halledicez.Extension metodların güzelliklerinden ve reflection'un gücünden yararlanıcaz tabiki.


        protected void GridView1_Sorting(object sender, GridViewSortEventArgs e)
        {
            if ((SortDirection)Session["Direction"] == e.SortDirection)
            {
                Session["Direction"] = SortDirection.Descending;
                GridView1.DataSource = new Book().GetBooks().OrderBy(b => b.GetType().GetProperty(e.SortExpression).GetValue(b, null)).ToList();
            }
            else
            {
                Session["Direction"] = SortDirection.Ascending;
                GridView1.DataSource = new Book().GetBooks().OrderByDescending(b => b.GetType().GetProperty(e.SortExpression).GetValue(b, null)).ToList();
            }

            GridView1.DataBind();
        }

 

OrderBy ve OrderByExtension Metodları bizden bir properyismi ister biz bunu GridViewSortEventArgs olayındaki e.SortExpression e.SortDirection olaylarını kullanıcaz buradaki Expression propertisi zaten bize hangi kolonun sıralanması gerektiğini açıkca belirtiyor.

Örnek kod aşağıdadır.

 

LINQDynamicColumnOrderBy.rar (20,75 kb)

Tags: , , , ,

Asp net | LINQ

Comments are closed

Hızlı Aramalar

Yeni Makaleler

isa doğan