我有要求對組摘要字段進行排序的要求。在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'上提出的另一個線索相同。 –