如何获取 RadPivotFieldList 中的 Row / Column Labels 里面的 filter

下图所示,如何获取 Label Filter 和 Value Filter ?

上次提到过 RadPivotFieldList 需要绑定 DataProvider = LocalDataSourceProvider,要获取 filter 需要用到 dataProvider 里面的属性了。




LocalDataSourceProvider PivotDataSrcProvider ,取 Row Labels 里面的 Filter 代码如下,Column Labels 里面的 Filter 是相似的,只是换个集合:

foreach (var rg in PivotDataSrcProvider.RowGroupDescriptions)
                {
                    if (rg.GroupFilter != null)
                    {

if (rg.GroupFilter is LabelGroupFilter)
                        {
                            var filter = rg.GroupFilter as LabelGroupFilter;
                            var itemsFilterCondition = (Telerik.Pivot.Core.Filtering.ItemsFilterCondition)filter.Condition;

    // Label Filter 里面分为 2 个部分,见上图 Label Filter,取 Filter 时要分开取

    // 这里说明一下 2 个部分中的关键属性:

// DistinctCondition.Comparison(枚举,包括 Includes / DoesNotInclude),Items(列表中的数据)

// Condition 根据 ComboBox 选择的不同有不同的类型,

// 1. TextCondition, 

// Comparison(枚举,包括 Contains / DoesNotContain / BeginsWith / DoesNotBeginWith / EndsWith / DoesNotEndWith),

// Pattern(TextBox 的值,string 类型), 

// IgnoreCase(Checkbox,bool 类型)

// 2. ComparisonCondition, 

// Condition(枚举,包括 IsGreaterThanOrEqualTo / IsGreaterThan / Equals / DoesNotEqual / IsLessThan / IsLessThanOrEqualTo),

// Than(TextBox 的值,object 类型, 

// IgnoreCase(Checkbox,bool 类型)

// 3. IntervalCondition,

// Condition(枚举,包括 IsBetween / IsNotBetween),

// From(TextBox 的值,object 类型),

// ToTextBox 的值,object 类型), 

// IgnoreCase(Checkbox,bool 类型)

                        }
                        else if (rg.GroupFilter is ValueGroupFilter)
                        {
                            var filter = rg.GroupFilter as ValueGroupFilter;
                            // Value Filter 是 Values 里面的字段做数据过滤,见上图 Value Filter,跟 Label Filter 差不多,只是没有 DistinctCondition 了,Condition 也减少了 TextCondition, 只有 ComparisonCondition 和 IntervalCondition,其他都差不多。(那个 Sum of Quantity 在 filter 中是用 AggregateIndex 标示的,用 AggregateDescriptions 索引可以找到相应的字段)
                        }
                        else if (rg.GroupFilter is GroupsCountFilter)
                        {
                            var filter = rg.GroupFilter as GroupsCountFilter;
                            var cnt = filter.Count; // Count 表示数字控件的值,如上图 Top 10 Filter, Count = 100
                            if (filter.Selection == SortedListSelection.Top) // Selection(枚举,包括 Top / Bottom), 表示第一个 ComboBox 的值,其他部分的数据我也没找到是哪个属性尴尬
                            {
                            }
                            else
                            {
                            }
                        }
                    }


                }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值