ASPxGridView组摘要排序 - 它对内部的内容进行排序,而不是外部的摘要

时间:2012-09-06 21:00:52

标签: sorting devexpress aspxgridview group-summaries

我已经通过将groupindex赋予aspxgridview中的特定列来对网格进行分组。

例如,如果我通过人名进行分组,当点击箭头查看内容时,该特定人员制作的订单详细信息将包含在详细内容中。

当我点击标题字段进行排序时,它会对 groupContent 中的数据进行排序,但它不会用于对 groupsummary

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

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

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

如果按公司名称排序,则会对内容进行排序,但显示国家/地区和总和的摘要无法在外部排序。

请建议我选择解决此问题。

感谢。

2 个答案:

答案 0 :(得分:1)

以下是基于this示例的解决方法 主要想法是创建汇总项,该汇总项显示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();
}
def extract_chunks(tagged_sent, chunk_type):
    grp1, grp2, chunk_type = [], [], "-" + chunk_type
    for ind, (s, tp) in enumerate(tagged_sent):
        if tp.endswith(chunk_type):
            if not tp.startswith("B"):
                grp2.append(str(ind))
                grp1.append(s)
            else:
                if grp1:
                    yield " ".join(grp1), "-".join(grp2)
                grp1, grp2 = [s], [str(ind)]
    yield " ".join(grp1), "-".join(grp2)

答案 1 :(得分:0)

当您按列分组时,devexpress会自动使用该列进行排序。如果不对数据进行排序,则无法进行分组。为了解决这个问题,我们对数据源本身进行了排序,然后将该数据源应用到网格中。