在SilverLight项目中,实现模糊查询,并将值绑定到列表中,使用了Telerik中的<telerik:RadMaskedTextBox>控件。

要先添加命名空间的引用: xmlns:telerik="http://schemas.telerik.com/2008/xaml/presentation"

并且项目要添加引用:

xaml页面代码:

  1. <!-- 检索-->
  2. <Border>
  3. <Grid HorizontalAlignment="Left" Width="150">
  4. <Grid.ColumnDefinitions>
  5. <ColumnDefinition Width="Auto"></ColumnDefinition>
  6. <ColumnDefinition></ColumnDefinition>
  7. </Grid.ColumnDefinitions>
  8. <Image Grid.Column="0" Source="/MASP;Component/Images/Find.png" Stretch="Uniform" Margin="4"></Image>
  9. <telerik:RadMaskedTextBox x:Name="mask_treat" Grid.Column="1" Margin="3" BorderThickness="0"
  10. EmptyContent="输入关键字进行检索" MaskType="None" VerticalAlignment="Center" ValueChanged="mask_treat_ValueChanged"></telerik:RadMaskedTextBox>
  11. </Grid>
  12. </Border>

xaml.cs代码:文本内容发生改变事件ValueChanged

  1. private void mask_treat_ValueChanged(object sender, Telerik.Windows.RadRoutedEventArgs e)
  2. {
  3. try
  4. {
  5. string value = mask_treat.MaskedText == null ? "" : mask_treat.MaskedText.ToString().Trim();
  6.  
  7. IList<GridViewDataColumn> ViewDataColumns = new List<GridViewDataColumn>();
  8. ViewDataColumns.Add(Rgv_treatlist.Columns[] as GridViewDataColumn);
  9. ViewDataColumns.Add(Rgv_treatlist.Columns[] as GridViewDataColumn);
  10. ViewDataColumns.Add(Rgv_treatlist.Columns[] as GridViewDataColumn);
  11. CustomFilterDescriptor FilterDescriptor = new CustomFilterDescriptor(ViewDataColumns);
  12. FilterDescriptor.FilterValue = value;
  13. Rgv_treatlist.FilterDescriptors.Clear();
  14. Rgv_treatlist.FilterDescriptors.Add(FilterDescriptor);
  15. }
  16. catch (Exception ex)
  17. {
  18. MessageBox.Show(ex.Message);
  19. }
  20. }

CustomFilterDescriptor类代码:

  1. using Telerik.Windows.Controls;
  2. using Telerik.Windows.Data;
  3.  
  4. public class CustomFilterDescriptor : FilterDescriptorBase
  5. {
  6. private readonly CompositeFilterDescriptor compositeFilterDesriptor;
  7. private static readonly ConstantExpression TrueExpression = System.Linq.Expressions.Expression.Constant(true);
  8. private string filterValue;
  9.  
  10. public CustomFilterDescriptor(IEnumerable<Telerik.Windows.Controls.GridViewColumn> columns)
  11. {
  12. this.compositeFilterDesriptor = new CompositeFilterDescriptor();
  13. this.compositeFilterDesriptor.LogicalOperator = FilterCompositionLogicalOperator.Or;
  14.  
  15. foreach (GridViewDataColumn column in columns)
  16. {
  17. this.compositeFilterDesriptor.FilterDescriptors.Add(this.CreateFilterForColumn(column));
  18. }
  19. }
  20.  
  21. public string FilterValue
  22. {
  23. get
  24. {
  25. return this.filterValue;
  26. }
  27. set
  28. {
  29. if (this.filterValue != value)
  30. {
  31. this.filterValue = value;
  32. this.UpdateCompositeFilterValues();
  33. this.OnPropertyChanged("FilterValue");
  34. }
  35. }
  36. }
  37.  
  38. protected override System.Linq.Expressions.Expression CreateFilterExpression(ParameterExpression parameterExpression)
  39. {
  40. if (string.IsNullOrEmpty(this.FilterValue))
  41. {
  42. return TrueExpression;
  43. }
  44. try
  45. {
  46. return this.compositeFilterDesriptor.CreateFilterExpression(parameterExpression);
  47. }
  48. catch
  49. {
  50. }
  51.  
  52. return TrueExpression;
  53. }
  54.  
  55. private IFilterDescriptor CreateFilterForColumn(GridViewDataColumn column)
  56. {
  57. FilterOperator filterOperator = GetFilterOperatorForType(column.DataType);
  58. FilterDescriptor descriptor = new FilterDescriptor(column.UniqueName, filterOperator, this.filterValue);
  59. descriptor.MemberType = column.DataType;
  60.  
  61. return descriptor;
  62. }
  63.  
  64. private static FilterOperator GetFilterOperatorForType(Type dataType)
  65. {
  66. return dataType == typeof(string) ? FilterOperator.Contains : FilterOperator.IsEqualTo;
  67. }
  68.  
  69. private void UpdateCompositeFilterValues()
  70. {
  71. foreach (FilterDescriptor descriptor in this.compositeFilterDesriptor.FilterDescriptors)
  72. {
  73. object convertedValue = DefaultValue(descriptor.MemberType);
  74.  
  75. try
  76. {
  77. convertedValue = Convert.ChangeType(this.FilterValue, descriptor.MemberType, null);
  78. }
  79. catch
  80. {
  81. }
  82.  
  83. if (!descriptor.MemberType.IsAssignableFrom(typeof(DateTime)))
  84. {
  85. descriptor.Value = convertedValue; ;
  86.  
  87. }
  88. }
  89. }
  90.  
  91. private static object DefaultValue(Type type)
  92. {
  93. if (type.IsValueType)
  94. {
  95. return Activator.CreateInstance(type);
  96. }
  97.  
  98. return null;
  99. }
  100. }

记录完成。

【Telerik】查询控件<telerik:RadMaskedTextBox>的使用的更多相关文章

  1. 【Telerik】<telerik:RadGridView/>控件的使用

    学习Telerik第三方控件中的WPF时,对于RadGridView控件做的一些记录. AutoGenerateColumns:启动时是否生成列 ShowGroupPanel:是否显示表格的分组名称 ...

  2. WPF第三方控件Telerik

    帮助文档:http://www.telerik.com/help/wpf/gridview-selection-via-checkbox.html Telerik专注于微软.Net平台的表示层与内容管 ...

  3. 自定义延时查询控件---valen

    当查询已经成标配 查询是已成为每个应用常用的功能,也正是这样前端后对查询的设计需求也日益增加,本文针对前端(Android端)查询控件做一个例子: 控件设计与逻辑 产品的设计UI图; 要达到如下 1| ...

  4. 基于 element-plus 封装一个依赖 json 动态渲染的查询控件

    前情回顾 基于 el-form 封装一个依赖 json 动态渲染的表单控件 Vue3 封装第三方组件(一)做一个合格的传声筒 功能 使用 vue3 + element-plus 封装了一个查询控件,专 ...

  5. UI控件Telerik UI for WinForms发布R1 2019|附下载

    Telerik UI for WinForms拥有适用Windows Forms的110多个令人惊叹的UI控件.所有的UI for WinForms控件都具有完整的主题支持,可以轻松地帮助开发人员在桌 ...

  6. WinFrom 第三方控件 TeleRik控件

    1.首先从工具-拓展与应用中下载安装  TeleRik WinFroms VsExtensions   TeleRik dll文件     2.工具箱控件  将Telerik控件更新过来 3.新建一个 ...

  7. WPF界面控件Telerik UI for WPF发布R2 2019 SP1|实现新的属性

    Telerik UI for WPF拥有超过100个控件来创建美观.高性能的桌面应用程序,同时还能快速构建企业级办公WPF应用程序.UI for WPF支持MVVM.触摸等,创建的应用程序可靠且结构良 ...

  8. 移动UI控件Telerik UI for Xamarin发布R2 2019|引入Map控件

    Telerik UI for Xamarin是一个构建跨平台移动应用程序的原生UI.Telerik UI for Xamarin使用Xamarin.Forms技术,它可以让开发人员从一个单一的共享C# ...

  9. UI控件Telerik UI for Silverlight发布R2 2019|附下载

    Telerik UI for Silverlight包含了超过100个能用于纯Silverlight应用程序中或能作为现有ASP.NET应用程序的一部分的UI控件.通过与我们的WPF控件共享一个相同的 ...

随机推荐

  1. MVC中使用Entity Framework 基于方法的查询学习笔记 (二)

    解释,不解释: 紧接上文,我们在Visual Studio2012中看到系统为我们自动创建的视图(View)文件Index.cshtml中,开头有如下这句话: @model IEnumerable&l ...

  2. MySQL索引背后的数据结构及算法原理【转】

    本文来自:张洋的MySQL索引背后的数据结构及算法原理 摘要 本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题.特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持 ...

  3. Python之str()与repr()的区别

    Python之str()与repr()的区别 str()一般是将数值转成字符串,主要面向用户.  repr()是将一个对象转成字符串显示,注意只是显示用,有些对象转成字符串没有直接的意思.如list, ...

  4. jeecms3.0.4版本 详解请求如何找到首页(转)

    第一步:发送http://localhost:8080/emisstrade/ 请求 第二步:首先进入配置文件web.xml, <context-param> <param-name ...

  5. Java 判断时间是否在指定天数之内

    import java.util.Date; import java.text.SimpleDateFormat; public class WriteForBlog { static private ...

  6. python 旋转数组

    #!/usr/bin/env python3 #-*-encoding:utf-8-*- l = [] u = [] q = 5 xx=[[col for col in range(q)] for r ...

  7. [转]阿里巴巴数据库连接池 druid配置详解

    一.背景 java程序很大一部分要操作数据库,为了提高性能操作数据库的时候,又不得不使用数据库连接池.数据库连接池有很多选择,c3p.dhcp.proxool等,druid作为一名后起之秀,凭借其出色 ...

  8. PhpStorm/Xdebug安装使用

    安装环境:XAMPP;phpStorm版本10; windows 7 64bit. XAMPP.phpStorm 都直接安装在了D盘根目录,9999m目录建在D:\xampp\htocts下,即目录工 ...

  9. 你不知道的CSS背景—css背景属性全解

    CSS背景在网页设计中使用频率非常高,然而对于这个开发人员很熟悉的CSS属性,却隐藏着许多不为初级开发人员熟知的细节,这篇文章尝试扒开这层不为人知的面纱. 首先列举一下CSS中关于元素背景的所有属性并 ...

  10. aliyun阿里云Maven仓库地址——加速你的maven构建

    maven仓库用过的人都知道,国内有多么的悲催.还好有比较好用的镜像可以使用,尽快记录下来.速度提升100倍. http://maven.aliyun.com/nexus/#view-reposito ...