2017-05-02 2 views
0

GridView의 다음 페이지로 이동할 때 정렬이 손실됩니다. 간단한 gridview 레코드를 표시 할 수 있고 정렬을 사용하여 모든 열을 정렬합니다. 첫 페이지에있을 때 정렬은 다음 페이지로 이동할 때 정렬 된 레코드를 다시 보여줍니다.asp.net webform C#

<asp:GridView ID="gv" runat="server" AllowPaging="True" AutoGenerateColumns="False" DataKeyNames="ID" 
Width="1100px" BackColor="White" BorderColor="#f5f5f5" BorderStyle="None" BorderWidth="0px" CellPadding="5"     Font-Names="Verdana" Font-Size="X-Small" ForeColor="Black" GridLines="Horizontal" PageSize="500" CssClass="myheader" OnPageIndexChanging="gv_PageIndexChanging" OnSorting="gv_Sorting" AllowSorting="true" onrowdatabound="gv_RowDataBound" onrowcommand="gv_RowCommand" > 

CODE

protected void gv_Sorting(object sender, GridViewSortEventArgs e) 
    { 
     // getCareerList(); 

     // DataTable dataTable = gv.DataSource as DataTable; 

     DataSet ds = new DataSet(); 
     ds = DataProvider.GetFormByFormTypeIDForGridview(int.Parse(ddCareerType.SelectedItem.Value.ToString())); 
     DataTable dataTable = ds.Tables[0]; 

     string SortDirection = "DESC"; 
     if (ViewState["SortExpression"] != null) 
     { 
      if (ViewState["SortExpression"].ToString() == e.SortExpression) 
      { 
       ViewState["SortExpression"] = null; 
       SortDirection = "ASC"; 
      } 
      else 
      { 
       ViewState["SortExpression"] = e.SortExpression; 
      } 
     } 
     else 
     { 
      ViewState["SortExpression"] = e.SortExpression; 
     } 


     if (dataTable != null) 
     { 
      DataView dataView = new DataView(dataTable); 
      dataView.Sort = e.SortExpression + " " + SortDirection; 
      gv.DataSource = dataView; 
      gv.DataBind(); 
     } 
    } 

BEHIND 나는이

답변

0

난에 중단 점을 설정 제안의 원인이 무엇 확실하지 않다 :

dataView.Sort = e.SortExpression + " " + SortDirection; 

및 체크하면 SortDirection의 가치 예상대로입니다. 그렇지 않은 경우 ViewState에 주문을 저장하는 데 문제가 있습니다. 그렇지 않다면 DataView에있는 것입니다.

이 게시물은 도움이 될 수 있습니다. sorting-is-not-working-on-gridview-in-asp-net