我在代码中创建了列,在Row区域中创建了3列,在列区域中休息,并且行区域中的所有列都按名称分组,我不希望任何分组/排序,因为我将其排序并分组为I想要存储过程。
知道如何禁用自动分组/排序吗?
由于
答案 0 :(得分:1)
无法阻止数据排序。基本上,ASPxPivotGrid旨在执行交叉计算。要正确计算结果,必须按用于计算结果的字段对数据进行分组。要对数据进行分组,必须相应地对行进行排序。例如,假设基础列表包含以下数据:
Row1: Caption1; Value1
Row2: Caption2; Value2
Row3: Caption2; Value3
Row4: Caption1; Value4
如果有必要根据标题构造行,那么pivot必须对它们进行排序,因为否则首先应该显示哪个标题是不明确的。
从上面的示例中可以看出,不可能完全禁用排序。但是,您可以应用自己的自定义排序算法并使用CustomSorting事件,您应该根据当前行位置调整e.Result参数:
using DevExpress.XtraPivotGrid;
//...
void pivotGridControl1_CustomFieldSort(object sender, PivotGridCustomFieldSortEventArgs e) {
e.Result = Math.Sign(e.ListSourceRowIndex2 - e.ListSourceRowIndex1);
e.Handled = true;
}
还请查看以下文章:Data Sorting
答案 1 :(得分:1)
禁止排序是不可能的。 PivotGridControl对数据进行分组 用相同的值来计算摘要。此操作需要 要排序的数据。此外,PivotGridControl中的每一行或每列 可能与数据源中的多个记录相关联。其他 单词,没有办法唯一标识行和列的顺序 在PivotGridControl中。
在这种情况下,需要通过处理ASPxPivotGrid.CustomFieldSort事件手动对数据进行排序。在此活动中计算排序和分组。下面,我发布了一个代码片段,演示了如何禁用排序:
private void pivotGridControl1_CustomFieldSort(object sender, PivotGridCustomFieldSortEventArgs e)
{
e.Result = e.ListSourceRowIndex1.CompareTo(e.ListSourceRowIndex2);
e.Handled = true;
}
参考:
Disable sorting feature by row/column
How to disable sorting and filtering features
SortOrder changed event handler
Regarding Grid Default Alphabetic Sorting
PivotGridCommands.ClearSorting Property
查看AspxPivotGrid Sorting部分以获取计算方面的帮助。
ASPxPivotGrid的PivotGridOptionsCustomization.AllowSort
选项。
字段值的排序顺序由字段的PivotGridFieldBase.SortOrder
属性指定。