我有要求对组摘要字段进行排序的要求。在Xaml Infragistics网格中对组摘要进行排序
Ex。我在网格中有3列。
第1步:我已通过按分组拖动Id列进行分组。
第2步:在列上添加总和,计数,平均值。
现在我想通过点击来对整数或者数量进行排序或者平均,这样整个分组按100,200,300的总和排序。
请帮助
我有要求对组摘要字段进行排序的要求。在Xaml Infragistics网格中对组摘要进行排序
Ex。我在网格中有3列。
第1步:我已通过按分组拖动Id列进行分组。
第2步:在列上添加总和,计数,平均值。
现在我想通过点击来对整数或者数量进行排序或者平均,这样整个分组按100,200,300的总和排序。
请帮助
的排序顺序由FieldSettings类的GroupByComparer控制,这可以实现通过创建被分组字段的自定义的IComparer。请注意,分组实际上也是一种排序,所以我将假定您仍然希望在列首次分组时发生默认排序。
在以下示例中,按记录分组时可以按单个摘要结果对其进行排序。
public class SummarySortComparer : IComparer
{
public int Compare(object x, object y)
{
GroupByRecord xRecord = x as GroupByRecord;
GroupByRecord yRecord = y as GroupByRecord;
IComparable xValue = xRecord.Value as IComparable;
object yValue = yRecord.Value;
if (xRecord.Tag != null)
{
xValue = xRecord.Tag as IComparable;
yValue = yRecord.Tag;
}
return xValue.CompareTo(yValue);
}
}
这是在设置:这是通过使用自定义的IComparer为排序由变量的值,如果它被设置,如果没有设置组完成创纪录回落到组的值网格使用下列内容:
this.XamDataGrid1.FieldSettings.GroupByComparer = new SummarySortComparer();
使用的PreviewMouseLeftButtonDown电网获得被点击的总结,如果有一个设置组通过记录的标签是总结的值,并刷新排序网格:
void XamDataGrid1_PreviewMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
SummaryResultPresenter summaryResultPresenter =
Utilities.GetAncestorFromType(e.OriginalSource as DependencyObject, typeof (SummaryResultPresenter), false) as
SummaryResultPresenter;
if (summaryResultPresenter != null)
{
GroupBySummariesPresenter groupBySummariesPresenter =
Utilities.GetAncestorFromType(summaryResultPresenter,
typeof(GroupBySummariesPresenter), false) as GroupBySummariesPresenter;
if (groupBySummariesPresenter != null)
{
SummaryResult summaryResult = summaryResultPresenter.SummaryResult;
int summaryResultIndex = summaryResult.ParentCollection.IndexOf(summaryResult);
foreach (GroupByRecord groupRecord in groupBySummariesPresenter.GroupByRecord.ParentCollection)
{
groupRecord.Tag = groupRecord.ChildRecords.SummaryResults[summaryResultIndex].Value;
}
this.XamDataGrid1.Records.RefreshSort();
}
}
}
请注意,在这个例子中有一些限制,因为我没有实现任何方式来清除什么摘要被排序,所以如果需要的话,仍然需要您执行。我也没有包含逻辑来改变排序方向,并使用了字段当前排序的方向,所以如果你还想更新方向,这也需要添加。
感谢您的回复,但这只是一种方式,实际上我需要两种方式Asc/Desc.Please建议如何获得功能。 –
要实现在随后的点击上更改排序的功能,您需要添加跟踪,以便知道排序是否已完成,然后您需要适当地设置排序方向。以编程方式排序和分组字段具有如何执行此操作的详细信息: http://help.infragistics.com/doc/WPF/Current/CLR4.0/?page=xamDataGrid_Sorting_And_Grouping_Fields_Programmatically.html 请注意,执行I提供的只是显示如何重新应用网格类型并知道要排序的内容,您可以在此基础上进行扩展以满足您的需求。 – alhalama
您好,alhalama您的回复与我在Infragistics fourm'https:// www.infragistics.com/my-account/support-case/CAS-128937-R2K0X6'上提出的另一个线索相同。 –