Gridview SortExpression有2个字段

时间:2010-04-12 19:21:09

标签: gridview sorting viewstate jquery-ui-sortable

我有一个从复杂对象获取数据源的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之间翻转。

并在此提示?

谢谢!

1 个答案:

答案 0 :(得分:0)

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

FunctionalAreaDisplayCode, EswbsDisplayCode asc

FunctionalAreaDisplayCode, EswbsDisplayCode desc

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

FunctionalAreaDisplayCode asc, EswbsDisplayCode asc

FunctionalAreaDisplayCode asc, EswbsDisplayCode desc

请参阅this ORDER BY tutorial

  

重要的是要记住,无论何时您通过多个列进行订购,您都需要   需要在每列之后指定ASC和/或DESC