DevExpress WinForms安装附带两个允许最终用户构建过滤器查询的控件:提供GUI的Filter控件和将Filter控件与基于文本输入的面板组合在一起的Filter Editor控件。
DevExpress Winforms Controls 内置140多个UI控件和库,完美构建流畅、美观且易于使用的应用程序。想要体验击下载>>
DevExpress WinForms安装附带两个允许最终用户构建过滤器查询的控件:提供GUI的Filter控件和将Filter控件与基于文本输入的面板组合在一起的Filter Editor控件。WinForms中,大多数数据感知控件都使用这些组件,但是您也可以将其包含在自己的表单中,并根据需要将其绑定到数据感知控件中。
自定义
在v19.1中为FilterCriteriaDisplayStyle设置引入Visual选项,它结合了对Filter Panel和Filter Control的可视化更改,使用涂有皮肤颜色的小块显示标准。在构建表达式时,它还使用下拉菜单而不是组合框来选择条件。
gridView1.OptionsView.FilterCriteriaDisplayStyle =DevExpress.XtraEditors.FilterCriteriaDisplayStyle.Visual;

菜单是完全可定制的,此类定制工作的主要入口点是事件FilterEditorCreated,它提供对FilterEditorControl实例的访问,而后者又可以处理三个事件。
PopupMenuShowing允许您隐藏、删除和重命名项目,并更改任何Filter Editor Control菜单图标,用于此目的的相关菜单具有e.MenuType == FilterControlMenuType.Clause:
gridView1.FilterEditorCreated += OnFilterEditorCreated;private void OnFilterEditorCreated(object sender,DevExpress.XtraGrid.Views.Base.FilterControlEventArgs e) {e.FilterEditor.PopupMenuShowing += OnPopupMenuShowing;}private void OnPopupMenuShowing(object sender,DevExpress.XtraEditors.Filtering.PopupMenuShowingEventArgs e) {if (e.MenuType == FilterControlMenuType.Clause) {var node = e.CurrentNode as ClauseNode;// customize function menus for DateTime fieldsif (node != null && node.Property.Type == typeof(DateTime)) {e.Menu.Hide(ClauseType.Equals);e.Menu.Remove(ClauseType.DoesNotEqual);e.Menu.Hide(DevExpress.XtraEditors.Controls.StringId.FilterAdvancedDateTimeOperatorMenuCaption);var menuItem = e.Menu.Find(ClauseType.Between);menuItem.Caption = "Between A and B";menuItem.ImageOptions.SvgImage = MySvgImage1;}}}

处理事件InitNode来初始化用户创建的新FilterEditor节点,例如分配默认功能和运算符。 在下面的示例中,如果用户为字段ShippingDate创建新条件,则将首先选择函数IsWeekend,该功能包含也被配置为所有字符串字段的默认值。
gridView1.FilterEditorCreated += OnFilterEditorCreated;private void OnFilterEditorCreated(object sender,DevExpress.XtraGrid.Views.Base.FilterControlEventArgs e) {e.FilterEditor.InitNode += OnInitNode;}private void OnInitNode(object sender, InitNodeEventArgs e) {if (e.IsNewNode) {e.PropertyName = "ShippingDate";e.SetOperation("IsWeekend");}else if (e.PropertyType == typeof(string))e.SetOperation(FunctionOperatorType.Contains);}
gridView1.FilterEditorCreated += OnFilterEditorCreated;private void OnFilterEditorCreated(object sender,DevExpress.XtraGrid.Views.Base.FilterControlEventArgs e) {e.FilterEditor.BeforeShowValueEditor += OnBeforeShowValueEditor;}private void OnBeforeShowValueEditor(object sender, ShowValueEditorEventArgs e) {var node = e.CurrentNode as ClauseNodeEx;if(node != null && node.Property.Type == typeof(DateTime) &&Equals(node.FunctionType, WithinDaysOfTodayFunction.FunctionName))e.CustomRepositoryItem = spinEdit;}

DevExpress技术交流群:540330292 欢迎一起进群讨论
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!