Почему столбец в моем представлении сетки не меняет направление сортировки?

Почему столбец в моем представлении сетки не меняет направление сортировки?

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

Кстати, у меня есть метод 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)
    {

}

person Blankman    schedule 05.04.2009    source источник
comment
Публикация кода GridView со страницы .aspx и любого кода программной части может помочь выявить проблему. Есть несколько возможных причин этой проблемы.   -  person DOK    schedule 05.04.2009


Ответы (1)


Думаю, вы найдете свой ответ во многих ответах на этот аналогичный вопрос.

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

Этот код из примера SqlDataSource просто устанавливает 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>
person DOK    schedule 05.04.2009
comment
Я считаю, что это можно сделать автоматически, если вы правильно настроите. Во-первых, я не думаю, что вам нужно устанавливать событие OnSorting или добавлять в него код. Но я думаю, вам может потребоваться добавить BoundColumns с определенным выражением SortExpressions. Затем он должен переключаться между ASC и DESC за вас. - person DOK; 05.04.2009