我有一个从复杂对象获取数据源的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之间翻转。
并在此提示?
谢谢!
答案 0 :(得分:0)
我的猜测是它只是通过将Sort顺序附加到sort表达式来创建SQL ORDER BY
子句。所以你将拥有:
FunctionalAreaDisplayCode, EswbsDisplayCode asc
和
FunctionalAreaDisplayCode, EswbsDisplayCode desc
由SQL(或任何进行排序)解释为:
FunctionalAreaDisplayCode asc, EswbsDisplayCode asc
和
FunctionalAreaDisplayCode asc, EswbsDisplayCode desc
重要的是要记住,无论何时您通过多个列进行订购,您都需要 需要在每列之后指定ASC和/或DESC
休