Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/339.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Gridview排序问题_C#_Asp.net_Vb.net_Gridview - Fatal编程技术网

C# Gridview排序问题

C# Gridview排序问题,c#,asp.net,vb.net,gridview,C#,Asp.net,Vb.net,Gridview,我有一个启用排序的gridview: <asp:GridView ID="grid1" runat="server" AutoGenerateColumns="False" DataKeyNames="ID" AllowSorting="true" OnSorting="grid1_Sorting"> <Columns> <asp:TemplateField HeaderText="Name" SortExpression="Name">

我有一个启用排序的gridview:

<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>
C#

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


我遇到的问题是,当我单击一列对其进行排序时,它同时经历了两种if条件(即升序和降序代码),但我不明白为什么?

确定问题出现在aspx页面中。gridview具有OnSorting=“grid1\u排序”。删除此行可以解决此问题


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

已知问题我已经读过,但正如我在文章中提到的,它针对datatable或使用Viewstate。您是否建议这是实现此目的的正确方法(在本例中使用Viewstate)?是的,您可以使用Viewstate来克服此问题。我已经更新了代码,但仍然存在相同的问题。我错过什么了吗?
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
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;
    }
}