2014-06-25 4 views
2

데이터베이스에서 데이터를로드하는 gridview가 있습니다. 데이터는 처음으로 datetime으로 정렬 된 gridview에 표시됩니다. 그 gridview의 한 칼럼에서 정렬을 허용하고 싶습니다. 예를 들어 main_post 컬럼에서. 나는 이것을 시도했지만 그리드 뷰는 컬럼의 헤더를 클릭 할 때 여전히 정렬하지 않았다.asp.net에서 gridview 열 정렬

<asp:DataGrid ID="Datagrid1" runat="server" 
    AllowPaging="True" 
    AllowSorting="True" 
    OnSorting="ComponentGridView_Sorting"> 
    <Columns> 
     <asp:BoundColumn DataField="main_post" HeaderText="Header Post ID" 
      SortExpression="ComponentGridView_Sorting" /> 
    </Columns> 
</asp:DataGrid> 

내 백엔드 코드 : :

protected void loadData() 
{ 
    DataTable dtTemp; 
    dtTemp = objDBInterface.getResults(strSQL); 
    Datagrid1.DataSource = dtTemp; 
    Datagrid1.DataBind(); 
    ViewState["dtbl"] = dtTemp; 
} 

protected void ComponentGridView_Sorting(object sender, GridViewSortEventArgs e) 
    { 
     DataTable dataTable = ViewState["dtbl"] as DataTable; 
     if (dataTable != null) 
     { 
      DataView dataView = new DataView(dataTable); 
      dataView.Sort = e.SortExpression + " " + ConvertSortDirection(e.SortDirection); 
      Datagrid1.DataSource = dataView; 
      Datagrid1.DataBind(); 
     } 
    } 
    private string ConvertSortDirection(SortDirection sortDirection) 
    { 
     string newSortDirection = String.Empty; 
     switch (sortDirection) 
     { 
      case SortDirection.Ascending: 
       newSortDirection = "ASC"; 
       break; 
      case SortDirection.Descending: 
       newSortDirection = "DESC"; 
       break; 
     } 

     return newSortDirection; 
    } 

나는 오류를 가지고 있겠지 나는 내 실수가 어디 있는지 잘 모릅니다 수 누군가

은 gridview에 내 프런트 엔드 코드 이 문제를 해결하도록 도와주세요.

미리 감사드립니다.

답변

2

누락 한 다음 코드를 사용합니다. 이것이이 비슷한 문제에 직면 한 다른 사람들을 도울 수 있기를 바랍니다.

protected void Datagrid1_SortCommand(object source, DataGridSortCommandEventArgs e) 
    { 
     string strSQL; 
     DataTable dt; 
     strSQL = "YOUR SELECT STATEMENT (SQL)"; 
     dt = strSQL; 
      { 
       string SortDir = string.Empty; 
       if (dir == SortDirection.Ascending) 
       { 
        dir = SortDirection.Descending; 
        SortDir = "Desc"; 
       } 
       else 
       { 
        dir = SortDirection.Ascending; 
        SortDir = "Asc"; 
       } 
       DataView sortedView = new DataView(dt); 
       sortedView.Sort = e.SortExpression + " " + SortDir; 
       Datagrid1.DataSource = sortedView; 
       Datagrid1.DataBind(); 
      } 
    } 

    protected SortDirection dir 
    { 
     get 
     { 
      if (ViewState["dirState"] == null) 
      { 
       ViewState["dirState"] = SortDirection.Ascending; 
      } 
      return (SortDirection)ViewState["dirState"]; 
     } 
     set 
     { 
      ViewState["dirState"] = value; 
     } 
    } 
0

당신은 당신은 내가 해결책을 가지고

<asp:DataGrid ID="Datagrid1" runat="server" AllowPaging="True" AllowSorting="True" OnSorting="ComponentGridView_Sorting"> 
    <Columns> 
<asp:BoundColumn DataField="main_post" HeaderText="Header Post ID" SortExpression="main_post" /> 
</Columns> 
    </asp:DataGrid> 

가 당신에게 도움이 될 것입니다 희망 정렬 식 ..

0
<asp:GridView ID="GridView1" runat="server" AllowSorting="True" AutoGenerateColumns="False" CellPadding="4" DataKeyNames="empid" DataSourceID="SqlDataSource1" EnableModelValidation="True" ForeColor="#333333" GridLines="None"> 
+4

를 들어 당신은 당신의 대답에 대한 몇 가지 설명을 제공 할 수 있습니다. – guisantogui

0

간단한 : 다음 aspx.cs (백엔드 코드)에이 코드를 넣어

OnSorting="ComponentGridView_Sorting"

에서 onsortcommand="ComponentGridView_Sorting"

에 : .ASPX 페이지에서 변경해야 Allowsorting 속성을 true로 설정하고 정렬 이벤트를 gridview에 추가하십시오.

<asp:GridView ID="GridView1" runat="server" AllowSorting="true" 
 
     OnSorting="GridView1_Sorting"> 
 
</asp:GridView>

이제 .cs이 파일에 이벤트 OnSorting를 추가

protected void GridView1_Sorting(object sender, GridViewSortEventArgs e) 
 
{ 
 
    SetSortDirection(SortDireaction); 
 
    if (dataTable != null) 
 
    { 
 
     dataTable.DefaultView.Sort = e.SortExpression + " " +_sortDirection; 
 
     GridView1.DataSource = dataTable; 
 
     GridView1.DataBind(); 
 
     SortDireaction = _sortDirection; 
 
    } 
 
} 
 
protected void SetSortDirection(string sortDirection) 
 
{ 
 
    if (sortDirection == "ASC") 
 
    { 
 
     _sortDirection = "DESC"; 
 
    } 
 
    else 
 
    { 
 
     _sortDirection = "ASC"; 
 
    } 
 
}

0

내 단계를 수행 정말 너무 쉽게 긴장 개발자를하지 마십시오

1 단계의 GridView

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" AllowPaging="true" class="w3-table-all" 
     OnPageIndexChanging="OnPageIndexChanging" PageSize="20" > 
     <Columns> 
      <asp:BoundField HeaderStyle-CssClass="w3-blue" ItemStyle-CssClass="w3-hover-green" ItemStyle-Width="250px" DataField="sn_no" HeaderText="ID" /> 
      <asp:BoundField HeaderStyle-CssClass="w3-blue" ItemStyle-CssClass="w3-hover-green" ItemStyle-Width="500px" DataField="name" HeaderText="Name" /> 
      <asp:BoundField HeaderStyle-CssClass="w3-blue" ItemStyle-CssClass="w3-hover-green" ItemStyle-Width="500px" DataField="mo" HeaderText="Mobile" /> 
      <asp:BoundField HeaderStyle-CssClass="w3-blue" ItemStyle-CssClass="w3-hover-green" ItemStyle-Width="500px" DataField="email" HeaderText="Email Id" /> 
      <asp:BoundField HeaderStyle-CssClass="w3-blue" ItemStyle-CssClass="w3-hover-green" ItemStyle-Width="500px" DataField="loc" HeaderText="Location" /> 
      <asp:BoundField HeaderStyle-CssClass="w3-blue" ItemStyle-CssClass="w3-hover-green" ItemStyle-Width="500px" DataField="date" HeaderText="Date" /> 
      <asp:BoundField HeaderStyle-CssClass="w3-blue" ItemStyle-CssClass="w3-hover-green" ItemStyle-Width="500px" DataField="day2" HeaderText="Day" /> 
      <asp:BoundField HeaderStyle-CssClass="w3-blue" ItemStyle-CssClass="w3-hover-green" ItemStyle-Width="500px" DataField="date" HeaderText="Date" /> 
      <asp:BoundField HeaderStyle-CssClass="w3-blue" ItemStyle-CssClass="w3-hover-green" ItemStyle-Width="500px" DataField="time" HeaderText="Time" /> 
     </Columns> 

    </asp:GridView> 

2 단계 고토 * .aspx.cs 파일을 만들고

편지). 내림차순의 경우

cmd = new MySqlCommand("SELECT * FROM appointment ORDER BY sn_no DESC", con); 

b).오름차순 #Vaibhav 야다 브 하기 Vaibhav이 이상 http://vaibhavdesigns.org 디자인 사랑

cmd = new MySqlCommand("SELECT * FROM appointment ORDER BY sn_no ASC", con); 

감사합니다 ...

+0

** 댓글 녀석 ** –