【发布时间】: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