2017-09-14 5 views
1

페이지 매기기GridView 컨트롤로 정렬하여 구현했습니다. 내가하려고 할 때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(); 
을 사용해야합니다