gpt4 book ai didi

c# - 为什么我的排序不起作用?

转载 作者:行者123 更新时间:2023-11-30 12:09:35 26 4
gpt4 key购买 nike

我在 asp.net gridview 上使用排序并设置了所有内容,但它不起作用。这些列甚至没有像往常一样加下划线,点击时什么也没有发生。

网格:

 <asp:GridView ID="gvResults" runat="server" Width="100%" AllowSorting="True" OnSorting="gvResults_Sorting" AutoGenerateColumns="False" CssClass="tblBrowse">

排序:

 protected void gvResults_Sorting(object sender, GridViewSortEventArgs e)
{
try
{
DataTable dtSortTable = gvResults.DataSource as DataTable;

if (dtSortTable != null)
{
DataView dvSortedView = new DataView(dtSortTable);

dvSortedView.Sort = e.SortExpression + " " + ConvertSortDirection(e.SortDirection);

gvResults.DataSource = dvSortedView;
gvResults.DataBind();

}
}
catch (Exception ex)
{
ExceptionHandling.NETException(ex, constPageID, constIsSiteSpecific);
}
}

转换排序方向:

 private string ConvertSortDirection(SortDirection sortDirection)
{
string newSortDirection = string.Empty;

switch (sortDirection)
{
case SortDirection.Ascending:
newSortDirection = "ASC";
break;

case SortDirection.Descending:
newSortDirection = "DESC";
break;
}

return newSortDirection;
}

最佳答案

设置SortExpression每列的属性。例如SortExpression="Column1"表示按Column1排序,SortExpression="Column2"表示按Column2排序,等等。下面是 aspx 代码的样子:

<asp:GridView ID="gvResults" runat="server" Width="100%" AllowSorting="True" OnSorting="gvResults_Sorting" AutoGenerateColumns="False" CssClass="tblBrowse">
<Columns>
<asp:BoundField DataField="Column1" SortExpression="Column1" />
<asp:BoundField DataField="Column2" SortExpression="Column2" />
</Columns>
</asp:GridView>

我们需要保留最后的排序表达式和回传之间的排序方向,所以需要这两个属性:

private string SortExpression
{
get
{
return ViewState["SortExpression"] == null ? string.Empty : ViewState["SortExpression"].ToString();
}
set
{
ViewState["SortExpression"] = value;
}
}

private string SortDirection
{
get
{
return ViewState["SortDirection"] == null ? string.Empty : ViewState["SortDirection"].ToString();
}
set
{
ViewState["SortDirection"] = value;
}
}

这是获取下一个排序方向的方法:

private string GetSortDirection(string sortExpression)
{
if (sortExpression == this.SortExpression)
{
// reverse the sort direction when current sort expression is the same as the last time
if (this.SortDirection == "ASC")
{
return "DESC";
}
else
{
return "ASC";
}
}
else
{
// always return ASC when current sort expression is different than the last time
return "ASC";
}
}

最后在 gvResults_Sorting 中:

protected void gvResults_Sorting(object sender, GridViewSortEventArgs e)
{
try
{
DataTable dtSortTable = gvResults.DataSource as DataTable;

if (dtSortTable != null)
{
// get sort direction (ASC or DESC)
string sortDirection = GetSortDirection(e.SortExpression);

DataView dvSortedView = new DataView(dtSortTable);

dvSortedView.Sort = e.SortExpression + " " + sortDirection;

gvResults.DataSource = dvSortedView;
gvResults.DataBind();

// save current sort expression and sort direction to ViewState
this.SortExpression = e.SortExpression;
this.SortDirection = sortDirection;
}
}
catch (Exception ex)
{
ExceptionHandling.NETException(ex, constPageID, constIsSiteSpecific);
}
}

关于c# - 为什么我的排序不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21238130/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com