2017-04-15 61 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