2017-09-14 16 views
1

のページ設定GridViewコントロールに実装しました。コードは以下の通りである:以下グリッドビューのページインデックス変更時にソートが失われる

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

をソート次のページに移動すると、ソートは失われます。何がうまくいかないのか分かりません。親切に助けてください。

答えて

1

あなたはDefaultView.ToTable();

dtrslt.DefaultView.Sort = e.SortExpression + " Desc"; 
dtrslt = dtrslt.DefaultView.ToTable(); 
を使用する必要があります
関連する問題