2012-02-17 122 views
0

我在代码中创建的列,3行区,休息列区域,以及所有那些在行区域由名称分组,我不希望任何分组/排序,因为我按照我希望的方式在存储过程中进行排序和分组。ASPxPivotGrid删除自定义排序/顺序

任何想法如何禁用自动分组/排序?

谢谢

回答

1

Ref:Can I disable sort?

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

1

没有办法阻止数据排序。基本上,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