【问题标题】:Gridview Sorting issueGridview排序问题
【发布时间】:2014-02-08 10:09:11
【问题描述】:

我有一个启用排序的网格视图:

<asp:GridView ID="grid1" runat="server" AutoGenerateColumns="False" DataKeyNames="ID" AllowSorting="true" OnSorting="grid1_Sorting">
    <Columns>
        <asp:TemplateField HeaderText="Name" SortExpression="Name">
            <ItemTemplate>
                <asp:Label ID="NameLabel" runat="server"></asp:Label>
            </ItemTemplate>
        </asp:TemplateField>

然后在我的排序事件中,我有

VB.NET

页面加载

Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load
    If Not IsPostBack Then
        ViewState("Order") = "DESC"
    End If
End Sub

    Protected Sub grid1_Sorting(sender As Object, e As GridViewSortEventArgs) Handles grid1.Sorting
 Select Case e.SortExpression
            Case "Name"
                If ViewState("Order") = "DESC" Then
                    grid1.DataSource = DescData()
                    grid1.DataBind()
                    ViewState("Order") = "ASC"
                    Exit Select
                Else
                    grid1.DataSource = AscData()
                    grid1.DataBind()
                    ViewState("SortOrder") = "DESC"
                    Exit Select
                End If
End Select

C#

protected void grid1_Sorting(object sender, GridViewSortEventArgs e)
{
    switch (e.SortExpression) {
        case "Name":
            if (e.SortDirection == SortDirection.Ascending) {
                grid1.DataSource = AscendingData();
                grid1.DataBind();
                e.SortDirection = SortDirection.Descending;
                break; 
            } else {
                grid1.DataSource = DescendingData();
                grid1.DataBind();
                e.SortDirection = SortDirection.Ascending;
                break; 
            }
            break;
    }
}

我读过很多文章,但大多数似乎都是针对 dataTable 或使用 Viewstate。这给我的印象是我缺少一些东西来使上述工作正常进行。

我遇到的问题是,当我单击一列对其进行排序时,如果条件(即升序然后降序代码)都通过了这两个条件,但我不明白为什么?

【问题讨论】:

  • 我已经读过,但正如我在帖子中提到的,它针对数据表或使用 Viewstate。您是否建议这是实现此目的的正确方法(在这种情况下使用 Viewstate)?
  • 是的,您可以使用视图状态来解决这个问题..
  • 我已经更新了我的代码,但仍然有同样的问题。我错过了什么吗?

标签: c# asp.net vb.net gridview


【解决方案1】:

好的,问题出在 aspx 页面中。网格视图具有 OnSorting="grid1_Sorting"。删除此行即可解决。

我想我一定是复制了一些 C# 代码并添加了那行代码。删除该行解决了该问题,因为它导致 GV 排序两次。

【讨论】:

    猜你喜欢
    • 2011-12-06
    • 1970-01-01
    • 1970-01-01
    • 2018-04-18
    • 1970-01-01
    • 1970-01-01
    • 2012-02-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多