2009-04-05 5 views
0

Почему мой столбец gridview не переключает направление сортировки?Почему мой столбец gridview не переключает направление сортировки?

Кажется, что только сортировка строк при первом нажатии на нее, любые другие клики просто обновляют страницу без каких-либо изменений в направлении сортировки.

btw У меня есть метод OnSorting, который я вызываю, чтобы обновить запрос sql для сортировки.

Мой код:

<asp:GridView ID="gvReport" runat="server" AutoGenerateColumns="False" 
    AllowSorting="True" 
    AllowPaging="True" 
    OnSorting="Report_OnSorting"> 



public void Report_OnSorting(object sender, GridViewSortEventArgs e) 
    { 

} 
+0

Проводка вашего кода GridView с вашей страницы .aspx, и любой код-код может помочь выявить проблему. Существует ряд возможных причин этой проблемы. – DOK

ответ

0

Я думаю, вы найдете ответ на свой вопрос в многочисленных ответах на this similar question.

Я считаю, что если вы используете простейшую версию, ASP.Net будет обрабатывать всю сортировку для вас.

Этот код из SqlDataSource example просто устанавливает AllowSorting = "true" и предоставляет SortExpressions в BoundColumns. Он не имеет подключения к событию OnSorting и никакого другого кода. Я считаю, что он управляет переключением между ASC и DESC для вас. В этом случае, используя страшный SqlDataSource, я считаю, что вам нужно использовать DataSet, а не DataReader.

<%@ Page Language="C#" %> 
<html> 
<head id="Head1" runat="server"> 
    <title>Sorting Data Using GridView</title> 
</head> 
<body> 
    <form id="form1" runat="server"> 
    <asp:GridView ID="GridView1" AllowSorting="true" runat="server" DataSourceID="SqlDataSource1" 
     AutoGenerateColumns="False"> 
     <Columns> 
     <asp:BoundField HeaderText="ID" DataField="au_id" SortExpression="au_id" /> 
     <asp:BoundField HeaderText="Last Name" DataField="au_lname" SortExpression="au_lname" /> 
     <asp:BoundField HeaderText="First Name" DataField="au_fname" SortExpression="au_fname" /> 
     <asp:BoundField HeaderText="Phone" DataField="phone" SortExpression="phone" /> 
     <asp:BoundField HeaderText="Address" DataField="address" SortExpression="address" /> 
     <asp:BoundField HeaderText="City" DataField="city" SortExpression="city" /> 
     <asp:BoundField HeaderText="State" DataField="state" SortExpression="state" /> 
     <asp:BoundField HeaderText="Zip Code" DataField="zip" SortExpression="zip" /> 
     <asp:CheckBoxField HeaderText="Contract" SortExpression="contract" DataField="contract" /> 
     </Columns> 
    </asp:GridView> 
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
     SelectCommand="SELECT [au_id], [au_lname], [au_fname], [phone], [address], [city], [state], [zip], [contract] FROM [authors]" 
     ConnectionString="<%$ ConnectionStrings:Pubs %>" /> 
    </form> 
</body> 
</html> 
+1

Другими словами, это не делается автоматически ... – Blankman

+0

Я считаю, что это можно сделать автоматически, если вы настроили его правильно. Во-первых, я не думаю, что вам нужно установить событие OnSorting или добавить в него код. Но я думаю, вам может понадобиться добавить BoundColumns с определенными SortExpressions. Затем предполагается, что вы будете переключаться между ASC и DESC. – DOK