ASPxPivotGrid删除自定义排序/订单

时间:2012-02-17 13:48:10

标签: asp.net devexpress

我在代码中创建了列,在Row区域中创建了3列,在列区域中休息,并且行区域中的所有列都按名称分组,我不希望任何分组/排序,因为我将其排序并分组为I想要存储过程。

知道如何禁用自动分组/排序吗?

由于

2 个答案:

答案 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)

参考:Can I disable sort?

  

禁止排序是不可能的。 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属性指定。