ASPXGridView Group Summary Сортировка - сортирует содержимое внутри, а не сводку за пределами

Я выполнил группировку сетки, предоставив groupindex в конкретный столбец в aspxgridview.

Например, если я группирую с помощью имени человека, и детали заказов, сделанные этим конкретным человеком, попадут в подробный контент, когда стрелка будет нажата, чтобы просмотреть содержимое.

Когда я нажимаю поля заголовка для сортировки, он сортирует данные внутри groupContent, но не используется для сортировки данных groupsummary

Я показываю все итоги как часть группового резюме, кроме имени человека.

Например, если вы видите ссылку ниже:

https://demos.devexpress.com/ASPxGridViewDemos/Summary/GroupSortBySummary.aspx

Если вы сортируете по названию компании, содержимое будет сортироваться, но сводка, показывающая страну и сумму, не имеет возможности сортироваться на внешнем уровне.

Пожалуйста, предложите мне варианты для решения этой проблемы.

Спасибо.

Ответ 1

Вот обходной путь, основанный на этом примере.
Основная идея заключается в создании сводного элемента, который показывает минимальное или максимальное значение столбца Country внутри группы City и сортировку City по этим итоговым значениям. Для этого события BeforeColumnSortingGrouping используется для изменения поведения сортировки.
Вот пример:

<dx:ASPxGridView ...
    OnBeforeColumnSortingGrouping="gridCustomers_BeforeColumnSortingGrouping">
private void SortByCountry()
{
    gridCustomers.GroupSummary.Clear();
    gridCustomers.GroupSummarySortInfo.Clear();

    var sortOrder = gridCustomers.DataColumns["Country"].SortOrder;

    SummaryItemType summaryType = SummaryItemType.None;

    switch (sortOrder)
    {
        case ColumnSortOrder.None:
            return;
            break;
        case ColumnSortOrder.Ascending:
            summaryType = SummaryItemType.Min;
            break;
        case ColumnSortOrder.Descending:
            summaryType = SummaryItemType.Max;
            break;
    }

    var groupSummary = new ASPxSummaryItem("Country", summaryType);
    gridCustomers.GroupSummary.Add(groupSummary);

    var sortInfo = new ASPxGroupSummarySortInfo();
    sortInfo.SortOrder = sortOrder;
    sortInfo.SummaryItem = groupSummary;
    sortInfo.GroupColumn = "City";

    gridCustomers.GroupSummarySortInfo.AddRange(sortInfo);
}

protected void Page_Load(object sender, EventArgs e)
{
    SortByCountry();
}

protected void gridCustomers_BeforeColumnSortingGrouping(object sender, ASPxGridViewBeforeColumnGroupingSortingEventArgs e)
{
    SortByCountry();
}

Ответ 2

Когда вы группируете столбец, devexpress автоматически использует этот столбец для сортировки. Без сортировки данных группировка невозможна. Чтобы преодолеть эту проблему, мы отсортировали сам источник данных, а затем применили этот источник данных к сетке.