排序是失去了对一个GridView asp.net

排序是失去了对一个GridView asp.net

问题描述:

我已经实现GridView控制分拣分页的页面索引变化。代码如下:排序是失去了对一个GridView asp.net

<asp:GridView ShowHeaderWhenEmpty="True" CssClass="Grid"      
      AlternatingRowStyle-CssClass="alt" AllowPaging="True" PageSize="15" OnPageIndexChanging="grdAllRequests_PageIndexChanging" 
      PagerStyle-CssClass="pgr" OnSorting="grdAllRequests_Sorting" AllowSorting="True" 
      EmptyDataText="No data to show" ID="grdAllRequests" runat="server" AutoGenerateColumns="false" 
      OnRowDataBound="grdAllRequests_RowDataBound"> 

下面是背后的代码分页和排序

protected void grdAllRequests_PageIndexChanging(object sender, GridViewPageEventArgs e) 
{ 
    grdAllRequests.PageIndex = e.NewPageIndex; 
    DataTable dt = (DataTable)ViewState["dtAllRequests"]; 

    BindDataBAL bind = new BindDataBAL(); 
    bind.BindGridData(grdAllRequests, dt); 
} 

protected void grdAllRequests_Sorting(object sender, GridViewSortEventArgs e) 
{ 
    DataTable dtrslt = (DataTable)ViewState["dtAllRequests"]; 
    if (dtrslt.Rows.Count > 0) 
    { 
     if (Convert.ToString(ViewState["sortdr"]) == "Asc") 
     { 
      dtrslt.DefaultView.Sort = e.SortExpression + " Desc"; 
      ViewState["sortdr"] = "Desc"; 
     } 
     else 
     { 
      dtrslt.DefaultView.Sort = e.SortExpression + " Asc"; 
      ViewState["sortdr"] = "Asc"; 
     } 
     ViewState["dtAllRequests"] = dtrslt; 
     grdAllRequests.DataSource = dtrslt; 
     grdAllRequests.DataBind(); 
    } 
} 

现在是当我在任何标题点击正确执行问题的排序,但是当我尝试导航到下一页,然后排序失去。不知道发生了什么问题。请帮助。

你必须使用DefaultView.ToTable();

dtrslt.DefaultView.Sort = e.SortExpression + " Desc"; 
dtrslt = dtrslt.DefaultView.ToTable();