0

为什么我的 gridview 的列单击不能切换排序方向?

它似乎只在我第一次点击它时对行进行排序,任何其他点击只会刷新页面,而不会改变排序方向。

顺便说一句,我有一个 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)
    {

}
4

1 回答 1

0

我想你会在这个类似问题的许多回复中找到你的答案。

我相信如果你使用最简单的版本,ASP.Net 会为你处理整个排序的事情。

SqlDataSource 示例中的此代码仅设置 AllowSorting="true" 并在 BoundColumns 中提供 SortExpressions。它没有连接 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>
于 2009-04-05T18:51:59.357 回答