ASPxPivotGrid删除自定义排序/顺序
我在代码中创建的列,3行区,休息列区域,以及所有那些在行区域由名称分组,我不希望任何分组/排序,因为我按照我希望的方式在存储过程中进行排序和分组。ASPxPivotGrid删除自定义排序/顺序
任何想法如何禁用自动分组/排序?
谢谢
不可能禁用排序。 PivotGridControl将数据 按相同的值分组以计算摘要。此操作需要对 数据进行排序。此外,PivotGridControl 中的每一行或列都可能与数据源中的多个记录相关联。在其他 的话,就没有办法来唯一地标识的行和列在PivotGridControl订购 。
在这种情况下,需要通过处理ASPxPivotGrid.CustomFieldSort事件来手动排序数据。做你的排序,并在此event.Below分组的计算,我已经发布一段代码,演示了如何禁用排序:
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
属性指定。
没有办法阻止数据排序。基本上,ASPxPivotGrid旨在执行交叉计算。为了正确计算结果,有必要按照用于计算结果的字段对数据进行分组。为了对数据进行分组,有必要相应地对行进行排序。例如,假设下面的列表中包含了以下数据:
Row1: Caption1; Value1
Row2: Caption2; Value2
Row3: Caption2; Value3
Row4: Caption1; Value4
如果它是构建基于标题行必要的,那么枢纽必须对它们进行排序,否则有一种若即若离应首先显示的标题所有。
正如可以从上面的样品看到的,这是不可能完全禁用排序。但是,您可以将自己的自定义排序算法,并使用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