如何使用界面控件Telerik UI for WinForms过滤数据?这里有答案

您是否希望应用程序能够拥有过滤选项,来帮助用户快速过滤?现在可以使用Telerik UI for WinForms全新的RadFilterView控件,它可以帮您做到!

点击获取Telerik UI for WinForms正式版下载

RadFilterView是一个控件,它允许您的用户使用直观的UI轻松过滤数据,它旨在与我们最流行的控件一起使用,如 RadGridView、RadListView、RadTreeView 等。您可以简单地设置 RadFilterView 的 AssociatedControl 属性,当用户更改某些过滤器时,关联的控件将立即被过滤。

如果您不想在每次用户进行单个更改时触发关联控件的过滤,可以更改FilteringMode属性。

this.radFilterView1.FilteringMode = FilteringMode.Programmatically;

该控件也可以独立工作(没有关联的控件),在这种模式下,需要设置DataSource属性,以便为控件提供数据。

当用户更改任何类别中的值时,将触发控件的 FilterChanged 事件。 在事件处理程序中,您可以使用 FilterDescriptors 的集合,它用于过滤我们的大多数数据控件,或者 RadFilterView.Expression 属性,它返回一个类似 SQL 查询的字符串:

"[FirstName] IN ('Bruce','Chris') AND [SSN] >= 2882255 AND [Married] = True"

类别

它是如何工作的? 设置 DataSource 时,过滤视图控件为相应数据的每一列创建一个类别,然后遍历每条记录并存储值,根据列的数据类型,控件创建不同类型的类别:

  • 文本(字符串)数据:该类别创建具有所有唯一值的复选框项目列表,您可以在单选和多选之间切换。
  • 数字数据:此类别显示数字输入 (RadSpinEditorElements),并限制用户在数据源中找到的最小值和最大值之间更改值。 旋转编辑器下方还添加了一个 RadTrackbarElement(滑块),以更好地控制值。
  • 布尔数据:它是文本类别的父级,并显示两个具有真假值的复选框。
  • DateTime:此类别使用两个日期输入 (RadDateTimePickerElements),就像数字输入一样,用户只能在 DataSource 的最小值和最大值之间更改日期。

  • Indicators:过滤指标的目的是让用户可以方便地识别出值发生变化的类别(例如,带有一些选中复选框的文本类别或最小值发生变化的数字类别)。 当用户折叠了一些类别并且只看到标题文本时,这非常有用,该指示器还允许清除当前类别的过滤器或控件中的所有过滤器。

使用类别

这些类别提供了多种选项,您可以在其中将整个类别替换为自定义类别、自定义类别或仅更改值。

现在让我们看一下绑定到文本数据的过滤器视图,以下是默认创建的文本类别的外观:

如您所见,类别标题文本不是用户友好的,因为它与源列名称相同,可以在 CategoryCreating 或 CategoryCreated 事件中更改类别显示名称。

private void RadFilterView1_CategoryCreated(object sender, FilterViewCategoryCreatedEventArgs e)
{
if (e.Category.PropertyName == "product_name")
{
e.Category.DisplayName = "Product Name";
}
}

可以看到的另一件事是,这些值与它们在数据源中出现的顺序相同。 当我们有大量文本值时,用户可以更轻松地浏览按字母排序的数据,对值重新排序的正确位置是 CategoryCreating 事件,在这里您甚至可以替换整个类别,这是如何对值进行排序的代码示例:

private void RadFilterView1_CategoryCreating(object sender, FilterViewCategoryCreatingEventArgs e)
{
List<object> values = e.Values.ToList();
values.Sort();
e.Values = values;
}

为了使其更具可读性,我们可以将每个产品的第一个字母大写。 这可以在文本类别的 ItemCreated 事件中完成并更改项目的文本(使用区域性 TextInfo 的 ToTitleCase 方法),附加到此事件的正确位置再次位于 CategoryCreating 事件中。

private void RadFilterView1_CategoryCreating(object sender, FilterViewCategoryCreatingEventArgs e)
{
List<object> values = e.Values.ToList();
values.Sort();
e.Values = values;

FilterViewTextCategoryElement category = e.Category as FilterViewTextCategoryElement;
category.ItemCreated += this.Category_ItemCreated;
}

private void Category_ItemCreated(object sender, FitlerViewTextCategoryItemCreatedEventArgs e)
{
TextInfo info = CultureInfo.CurrentCulture.TextInfo;
string newText = info.ToTitleCase(e.Item.Text);
e.Item.Text = newText;
}

最后的结果:



Telerik UI for WinForms| 下载试用

Telerik UI for WinForms拥有适用Windows Forms的110多个令人惊叹的UI控件。所有的UI for WinForms控件都具有完整的主题支持,可以轻松地帮助开发人员在桌面和平板电脑应用程序提供一致美观的下一代用户体验。


Telerik_KendoUI产品技术交流群:726377843    欢迎一起进群讨论

了解最新Kendo UI最新资讯,请关注Telerik中文网!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值