2017-04-15 59 views
0

是否可以使用DataTable.Select(「」,sortExpression)排序ASP.NET GridView?ASP.NET GridView使用DataTable排序。選擇

我有一個正常的GridView與AllowSorting =「true」和OnSorting =「grdEmployees_Sorting」。

protected void grdEmployees_Sorting(object sender, GridViewSortEventArgs e) 
     { 
      DataTable dt = getDataTable(); 

      var sortExprOrder = e.SortDirection == SortDirection.Ascending ? " ASC" : " DESC"; 

      var rows = dt.Select("", string.Format(e.SortExpression + "{0}", sortExprOrder)); 

      grdEmployees.DataSource = rows; 
      grdEmployees.DataBind(); 
     } 

不知道爲什麼,但這不起作用。網格顯示了一堆有三列的行,RowError,RowState和HasErrors(包含所有空複選框的行)。

我做錯了什麼?

回答

1

你不需要選擇排序DataTable.Select是用於過濾

該如何排序

protected void grdEmployees_Sorting(object sender, GridViewSortEventArgs e) 
     { 
      DataTable dt = getDataTable(); 

      var sortExprOrder = e.SortDirection == SortDirection.Ascending ? " ASC" : " DESC"; 

      DataView dv = new DataView(dt); 
      dv.Sort = string.Format("{0} {1}", 
       e.SortExpression, sortExprOrder); 

      grdEmployees.DataSource = dv; 
      grdEmployees.DataBind(); 
     } 
+0

dt.Select( 「」 的SortExpression)返回的DataRow []。爲什麼我不能將DataRow類型的數組分配給GridView的DataSource? – Pavel

+0

DataRow將數據保存在ItemArray中,因此如果要綁定DataRow,則需要綁定ItemArray的集合,如GridView1.DataSource = rows.Select(r => r.ItemArray [0]); – Krishna