点击“了解更多”获取DevExpress v19.2完整版下载
DevExpress Winforms Controls 内置140多个UI控件和库,完美构建流畅、美观且易于使用的应用程序。
DevExpresy $ F +s WinForms安装附带两个允6 j ] j l ^ X p t许最终用户构建过滤器查询的控件:提供GUI的Filter控件和将Filter控件与基于文本输入的面板组合在一起的Filter Editor控件。Win^ M N O ( i ;Forms中,大多数数据感知控件都使用这些组件,但是您也可以将其包含在自己的表单中,F j y并根E g w = A据需要将其% 2 M % B绑定到数据2 0 ~ _ - D ~ G +感知控件中。
自定义
在v19.1中为FilterCriteriaDispld a x q D ; UaySty{ 0 Z . w :le设置引入Visual选项,它结合了对Filter Panel和Filter Control的可视化更改,使用涂有皮肤颜色的小块显示标准。在构建表达式时,它还使用下拉菜单而不是组合框来选择条件。
gri3 O y f z ^ _dView1.OptionsView.FilterCriteriaDisplayStyle =DevExpr{ 8 A Y Uess.XtraEditors.Fb / w j 1 Q BilterCriteriaDisplayStyle.Visual;
菜单是完全可定制的,此类定制工作的主要入0 ? v - 7 | p Y口点是事件FP . - 5ilterEditorCreated,它提供对FilterEditorControl实例的访问,而后者又可以处理三个事件。
PopupMenuShowing允许您隐藏、删除和重命名项目,并更改任何Filter Editor Control菜单图标,用于此目的的相关菜单具有e.MenuType == FilterControlMenuType.Clause:
gr3 U a ~ K | G Y PidView1.FilterEditorCreated += OnFilterEditorCreated;
private void OnFilterEditorCreat/ [ % f 6 R A Ted(object sendH r per,DevExpress.? 3 @ g ;XtraGrid.Views.Base.FilterControlEventArgs e) {e.FilterEditor.PopupMenuShowing += OnPz = # l P qopupMenuShowing;}
private void OnPopupMenT 9 C ; U ]uShowing(object sender,DevExpresst 7 v $ ( - C - Z.XtraEditors.Filtering.PopupMenuShowingEventArgs e) {if (e.P 1 YMenuType == FilterControlMenuType.Clause) {var node = e.CurrentNode as ClauseNode;
// customize functiot g 3 ( 1 Nn menus for DateTime fiu L , S r keldsif (node != null &# g J S& node.Property.Type == typeof(DateTime)) {e.Menu.Hide(ClauseType.Equals);e.Menu.RemovD } . g =e(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;}}}
处理事l A K件InitNode来初始B . |化用户创建的新FilterEditor节点,例如分配默认功能和运算符。 在下面的示例中,如果用户为字段ShippingDate创H q ; j M建新条件,则将首先选择函{ ~ 2 - U L 7 m %数IsWeekend,该功能包含也被配置为所有字符串字段的默认值) $ ? x y 0 5 . e。
gridViewf L ; - A { J1.FilterEditorCreated += OnFilterEditorCreated;
private void OnFilterEditorCre8 3 b R [ated(object sender,DevExpress.XtraGrid.Views.Base.FilterControlEventArgs e) {e.FilterEditor.Init| 2 5 # I U ^ kNode += OnInitNode;}
private void OnIn{ _ | u N t w =itNode(objec` ~ [ m S O ] | kt sender,R X ( v InitNodeEventArgs e) {if (e.IsNewNode) {e.PropertyName = \"ShippingDate\";e.SetOperation(\"IsWeekend\; 0 ` 3 - = q ( x");}else if (s w q z oe.PropertyType == typeof(string))e.SetOperation(FunctionOperatorType.Contains);}
为BeforeShowValuo l O ) G 0 J BeEditor实现一个处理程序,来自定义Filter Editor Controls中使用的值编辑器。例如,大多数DateTime函数使用日期操作数并使用Calendar编辑器。但是,自定义函数InsideDaysOfToday(以上)接受天数的整数值,下面的代码将默认的Calendar编辑器更改为Spin+ r 7 f f E Y }Edit8 w ?控件。
gridView1.FilterEditorCreated += OnFilterEditorCreated;
private void OnFilterEditorCreated(object sender,DevExpress.XtraGridm m P % : t.Views.Base.FilterControlEventArgs e) {e.FilterEditor.Beg ~ ^foreShowValueEditor += OnBeforeShowValueEditor;}
private void OnBeforeShowValueEditor(object sender, ShowValueEdb T /itorEventArgs e) {var node = e.Cure = _ R VrX w ? % S 0entNode as ClauseNodeEx;if(node != null && node.Property.Type == typeof. Q s ; W | 1 4 }(DateTime) &&Equa{ H U f b O $ j qls(node.FunctionType, Wit^ q ) v 9 XhinD. L w # f gaysOfTodayFunction.FunctionName} [ O ~ } u D))e.CustomRepositorL 2 9 9 e ~ a oyItem = spinEdit;}