我已经通过将groupindex赋予aspxgridview中的特定列来对网格进行分组。
例如,如果我通过人名进行分组,当点击箭头查看内容时,该特定人员制作的订单详细信息将包含在详细内容中。
当我点击标题字段进行排序时,它会对 groupContent 中的数据进行排序,但它不会用于对 groupsummary
除了人名之外,我将所有总计作为小组摘要的一部分显示。
例如,如果您在以下链接中看到:
https://demos.devexpress.com/ASPxGridViewDemos/Summary/GroupSortBySummary.aspx
如果按公司名称排序,则会对内容进行排序,但显示国家/地区和总和的摘要无法在外部排序。
请建议我选择解决此问题。
感谢。
答案 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会自动使用该列进行排序。如果不对数据进行排序,则无法进行分组。为了解决这个问题,我们对数据源本身进行了排序,然后将该数据源应用到网格中。