Gridview SortExpression с 2 полями - PullRequest
       11

Gridview SortExpression с 2 полями

1 голос
/ 12 апреля 2010

У меня есть GridView, который получает свой источник данных от сложного объекта. Так что я делаю сортировку и разбиение по страницам в коде позади.

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

Для важного столбца заголовка у меня есть SortExpression с 2 полями:

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 голосов
/ 29 июня 2010

Я предполагаю, что он создает предложение SQL ORDER BY, просто добавляя порядок сортировки в выражение сортировки. Итак, у вас будет:

FunctionalAreaDisplayCode, EswbsDisplayCode asc

и

FunctionalAreaDisplayCode, EswbsDisplayCode desc

которые интерпретируются SQL (или что-либо еще, что делает сортировку) как:

FunctionalAreaDisplayCode asc, EswbsDisplayCode asc

и

FunctionalAreaDisplayCode asc, EswbsDisplayCode desc

См. этот учебник ORDER BY :

Важно помнить, что всякий раз, когда вы заказываете более одного столбца, вы необходимо указывать ASC и / или DESC после каждого столбца

Хью

...