Xamarin的Telerik UI?下载30天免费试用

过滤

RadDataGrid同时支持程序化的过滤和这样的应用通过UI -过滤界面

程序化的过滤

中添加不同的过滤器描述符来实现程序过滤FilterDescriptor控件的集合。支持以下描述符类型:

所有的filterdescriptor都位于Telerik.XamarinForms.Common.Data命名空间中:

xmlns:常见= " clr-namespace: Telerik.XamarinForms.Common.Data;装配= Telerik.XamarinForms.Common”

文本过滤器描述符

属性:

  • PropertyName:获取或设置用于检索要筛选的值的属性的名称。
  • 操作符:获取或设置TextOperator值,该值定义了value成员如何与items源中的每个值进行比较。
  • 价值:获取或设置比较中使用的值。这是比较运算的右操作数。
  • IsCaseSensitive:获取或设置一个值,该值决定文本比较是否区分大小写。缺省值为true。

使用TextFilterDescriptor的实例中添加它的实例RadDataGrid。过滤器Descriptors集合并设置其PropertyName属性将其与自定义对象的属性关联。然后通过操作符而且价值属性需要设置筛选条件和要比较的值。你也可以利用IsCaseSensitive属性来确定文本比较是否区分大小写。

数值滤波描述符

表示按数值数据类型的属性进行筛选的描述符。它公开以下属性。

  • PropertyName:获取或设置用于检索要筛选的值的属性的名称。
  • 价值:获取或设置比较中使用的值。这是比较运算的右操作数。
  • 操作符:获取或设置NumericalOperator值,该值定义左右操作数比较背后的布尔logc。

日期时间过滤器描述符

DateTimeFilterDescriptor是一个根据系统属性进行过滤的描述符。DateTime数据类型。它公开了以下属性:

  • PropertyName:获取或设置用于检索要筛选的值的属性的名称。
  • 价值:获取或设置比较中使用的值。这是比较运算的右操作数。
  • 操作符:获取或设置NumericalOperator值,该值定义左右操作数比较背后的布尔逻辑。

布尔过滤器描述符

BooleanFilterDescriptor是一个通过System的属性进行过滤的描述符。布尔数据类型。它公开了以下属性:

  • PropertyName:获取或设置用于检索要筛选的值的属性的名称。
  • 价值:获取或设置比较中使用的值。这是比较运算的右操作数。

复合过滤器描述符

CompositeFilterDescriptor表示一个特殊的FilterDescriptorBase,它存储了任意数量的其他Descriptors实例。逻辑AND或or运算符应用于所有组合过滤器上,以确定PassesFilter例程的结果。

     < /常见:CompositeFilterDescriptor >

委托过滤器描述符

DelegateFilterDescriptor暴露了以下属性:

  • 过滤器:获取或设置IFilter用于检查数据项是否通过筛选器的实现。

要使用DelegateFilterDescriptor您需要创建一个实现IFilter接口,该接口将返回关键你想要过滤。

然后,您需要向RadDataGrid添加一个DelegateFilterDescriptor。FilterDescriptors集合,并设置其Filter属性。

CustomFilter实现:

类CustomFilter: IFilter{公共bool PassesFilter(对象项目){if((项目作为俱乐部)。体育场容量> 60000 &&(项目为俱乐部)。体育场容量<85000){返回true;} else{返回false;}}}

添加DelegateFilterDescriptorRadDataGrid

grid.FilterDescriptors。Add(new DelegateFilterDescriptor() {Filter = new CustomFilter()});

过滤界面

当单击选项图标(OptionsButton,三个点)在每个列的标题上,它允许用户轻松地根据列值筛选数据。

OptionsButton打开过滤UI

下图显示了OptionsButton的位置

OptionsButton三个点打开过滤UI

显示/隐藏OptionsButton

  • IsOptionsButtonVisible保龄球)属性表示OptionsButton是否可见。默认值为真正的.属性可以设置在DataGridColumnHeaderStyle

OptionsButton三点可见性

例子

< telerikGrid: DataGridTextColumn。HeaderStyle > 

过滤界面

下面是过滤UI的样子:

过滤界面

过滤UI暴露了以下属性:

  • UserFilterMode:定义是否启用/禁用过滤UI。可用的选项有汽车/启用/禁用.UserFilterMode的默认值为汽车

以下属性用于启用/禁用特定列的过滤:

  • CanUserFilter(bool):定义一个值,该值指示用户是否可以使用筛选UI筛选列。

筛选UI的外观可以通过继承DataGridFilterControlBase类。欲了解更多有关此支票的详情如何自定义过滤UI篇文章。

FilterControl模板

从R2 2020 DataGrid允许您使用FilterControlTemplate属性对数据网格列应用过滤。

  • FilterControlTemplate(DataTemplate):指定用于过滤UI的用户自定义模板。模板必须包含Telerik.XamarinForms.DataGrid.DataGridFilterControlBase类的一个实例

使用实例TempateColumn

1.类继承的自定义控件是第一步DataGridFilterControlBase类:

     
公共部分类PopulationFilter: DataGridFilterControlBase{公共PopulationFilter() {InitializeComponent();} public FilterDescriptorBase FilterDescriptor {get;设置;}公共覆盖FilterDescriptorBase BuildDescriptor() {TextFilterDescriptor textDescriptor = new TextFilterDescriptor();textDescriptor。PropertyName= this.PropertyName; textDescriptor.Value = this.textEntry.Text; textDescriptor.Operator = (TextOperator)this.descriptorOperatorPicker.SelectedItem; return textDescriptor; } protected override void Initialize() { this.descriptorOperatorPicker.ItemsSource = this.GetOperators(); var textFilterDescriptor = this.FilterDescriptor as TextFilterDescriptor; if (textFilterDescriptor != null) { this.descriptorOperatorPicker.SelectedIndex = (int)textFilterDescriptor.Operator; this.textEntry.Text = textFilterDescriptor.Value.ToString(); } else { this.descriptorOperatorPicker.SelectedIndex = 0; if (!string.IsNullOrEmpty(this.textEntry.Text)) { this.textEntry.Text = null; } } } private List GetOperators() { var operators = new List { TextOperator.Contains, TextOperator.DoesNotContain, TextOperator.StartsWith, TextOperator.EndsWith, }; return operators; } }

您应该像上面的c#代码片段中所示的那样重写所需的方法。

2.使用FilterControlTemplate属性将已经创建的组件指定为模板列的过滤控件。

        < telerikDataGrid: DataGridTemplateColumn。FilterControlTemplate>       

视图模型在本例中使用的声明如下:

公共类FilteringViewModel{公共FilteringViewModel() {var source = new ObservableCollection();源。Add(new City("Vratsa", 54150));源。Add(新城市(“墨西哥城”,22000000));源。Add(new City("Trieste", 204849));源。Add(new City("Ottawa", 934243));源。Add(new City("Caracas", 1943901)); source.Add(new City("Amsterdam", 851573)); source.Add(new City("Pittsburgh", 305704)); source.Add(new City("Athens", 664046)); source.Add(new City("Taipei", 2704974)); source.Add(new City("Marseille", 855393)); source.Add(new City("Pnom Penh", 1501725)); this.GridSource = source; this.TextOperatorSource = Enum.GetValues(typeof(TextOperator)); this.NumericalOperatorSource = Enum.GetValues(typeof(NumericalOperator)); } public ObservableCollection GridSource { get; set; } public IList TextOperatorSource { get; set; } public IList NumericalOperatorSource { get; set; } }

城市自定义对象:

public class City {public City(字符串名称,int人口){this。Name = Name;这一点。人口=人口;}公共字符串名称{get;设置;}公共int人口{get;设置;}}

中的功能,您可以查看FilterTemplateColumn示例,该示例展示了如何实现功能例子/ DataGrid /过滤文件夹中的SDK示例浏览器应用程序。

另请参阅

在本文中
Baidu
map