11

我通过将 groupindex 赋予 aspxgridview 中的特定列来完成网格的分组。

例如,如果我按人员姓名进行分组,则当单击箭头查看内容时,该特定人员所做的订单详细信息将出现在详细内容中。

当我单击标题字段进行排序时,它正在对groupContent内的数据进行排序,但它不用于对groupsummary的数据进行排序

除了人名之外,我将所有总数显示为组摘要的一部分。

例如,如果您在以下链接中看到:

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

如果按公司名称排序,内容将被排序,但显示国家和总和的摘要无法在外部级别排序。

请给我建议解决这个问题的选项。

谢谢。

4

2 回答 2

1

这是基于示例的解决方法。主要思想是创建汇总项,显示组内列
的最小值或最大值,并按此汇总值对组进行排序。对于此事件,用于更改排序行为。 这是示例:CountryCityCityBeforeColumnSortingGrouping

<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();
}
于 2015-09-04T11:37:24.303 回答
0

当您按列分组时,devexpress 会自动使用该列进行排序。如果不对数据进行排序,就不可能进行分组。为了克服这个问题,我们对数据源本身进行了排序,然后将该数据源应用于网格。

于 2015-03-18T16:11:24.633 回答