【问题标题】:Gridview SortExpression with 2 fields具有 2 个字段的 Gridview SortExpression
【发布时间】:2011-02-07 03:49:01
【问题描述】:

我有一个从复杂对象获取数据源的 GridView。 所以我在后面的代码中进行排序和分页。

<asp:GridView ID="SystemsDetailList" runat="server" AllowSorting="true" AllowPaging="true"
AutoGenerateColumns="False" ShowFooter="True" OnPageIndexChanging="gridView_PageIndexChanging" OnSorting="gridView_Sorting">

对于一个重要的标题列,我有一个包含 2 个字段的 SortExpression:

SortExpression="FunctionalAreaDisplayCode, EswbsDisplayCode"

这在后面的代码中:

protected void gridView_Sorting(object sender, GridViewSortEventArgs e)
{
    BindSystemList(e.SortExpression, sortOrder);
}

public string sortOrder
{
    get
    {
        if (ViewState["sortOrder"].ToString() == "desc")
            ViewState["sortOrder"] = "asc";

        else
            ViewState["sortOrder"] = "desc";

        return ViewState["sortOrder"].ToString();
    }
    set
    {
        ViewState["sortOrder"] = value;
    }
}

由于某种原因,它会保持“FunctionalAreaDisplayCode”始终按 ASC 排序,但 EswbsDisplayCode 工作正常,因为它在 ASC 和 DESC 之间正确切换。

这里有提示吗?

谢谢!

【问题讨论】:

  • 我不明白你的问题。你是说它应该在 (FunctionalAreaDisplayCode asc, EswbsDisplayCode asc) 和 (FunctionalAreaDisplayCode desc, EswbsDisplayCode desc) 之间切换

标签: gridview sorting viewstate jquery-ui-sortable


【解决方案1】:

我的猜测是它通过简单地将排序顺序附加到排序表达式来创建 SQL ORDER BY 子句。所以你将拥有:

FunctionalAreaDisplayCode, EswbsDisplayCode asc

FunctionalAreaDisplayCode, EswbsDisplayCode desc

由 SQL(或任何进行排序的)解释为:

FunctionalAreaDisplayCode asc, EswbsDisplayCode asc

FunctionalAreaDisplayCode asc, EswbsDisplayCode desc

this ORDER BY tutorial

请务必记住,每当您按多列排序时,您 需要在每列之后指定 ASC 和/或 DESC

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-28
    • 1970-01-01
    • 1970-01-01
    • 2013-01-21
    • 1970-01-01
    相关资源
    最近更新 更多