2010-02-27 3 views

ответ

1

Вы можете реализовать код, подобный следующему:

protected void GridView1_Sorting(object sender, GridViewSortEventArgs e) 
{ 
    DataTable dataTable = GridView1.DataSource as DataTable; 

    if (dataTable != null) 
    { 
      DataView dataView = new DataView(dataTable); 
      dataView.Sort = e.SortExpression + " " + ConvertSortDirectionToSql(e.SortDirection); 

      GridView1.DataSource = dataView; 
      GridView1.DataBind(); 
    } 
} 

private string ConvertSortDirectionToSql(SortDirection sortDirection) 
{ 
    string newSortDirection = String.Empty; 

    switch (sortDirection) 
    { 
      case SortDirection.Ascending: 
       newSortDirection = "ASC"; 
      break; 

      case SortDirection.Descending: 
       newSortDirection = "DESC"; 
      break; 
    } 

    return newSortDirection; 
} 

С этим кодом, ваше определение GridView следует читать:

<asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="false" AllowSorting="true" OnSorting="GridView1_Sorting"> 
<Columns> 
    <asp:BoundField DataField="Name" HeaderText="People Names" SortExpression="Name" /> 
    <asp:BoundField DataField="Age" HeaderText="People Ages" SortExpression="Age" /> 
</Columns> 
</asp:GridView> 
+0

Попробуйте нажать еще раз на том же столбце и увидеть если он сортирует в другом направлении. –

+1

Ваша проблема может быть решена по этой ссылке: http://stackoverflow.com/questions/250037/gridview-sorting-sortdirection-always-ascending –

0

Не уверен, что если вы уже добавили это событие или нет в вашем коде позади.

У вас есть AllowSorting="true", установленный для GridView, и поэтому вам нужно, чтобы имеет обработчик событий для его сортировочного события.

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


protected void GridView1_Sorting(object sender, GridViewSortEventArgs e) 

{ 

    //Add your code here for handling 

} 
Смежные вопросы