Devexpress-GridLookUpEdit

1. Fuzzy query multiple columns easiest way

About DevExpress winfom of GridLookUpEdit controls to achieve multi-column filtering method, presented here in a simple way, you can call a public method to provide multi-column filters.
Before introducing the method, popularize knowledge, GridLookUpEdit knowledge base is RepositoryItemGridLookUpEdit, cut correct to say GridLookUpEdit just a shell RepositoryItemGridLookUpEdit only,
which is in GridControl the GridView, the column is bound to a reason RepositoryItemGridLookUpEdit instead of GridLookUpEdit, RepositoryItemGridLookUpEdit it is the core GridLookUpEdit, so this filtering process, in fact, to RepositoryItemGridLookUpEdit operate,

Method parameters are RepositoryItemGridLookUpEdit type, used as such in the GridView RepositoryItemGridLookUpEdit can be invoked directly. eg:

 

SetGridLookUpEditMoreColumnFilter(gridLookUpEdit1.Properties);
SetGridLookUpEditMoreColumnFilter(repositoryItemGridLookUpEdit1);
/// <summary>

        /// 设置GridLookUpEdit多列过滤 /// </summary> /// <param name="repGLUEdit">GridLookUpEdit的知识库,eg:gridlookUpEdit.Properties</param> void SetGridLookUpEditMoreColumnFilter(DevExpress.XtraEditors.Repository.RepositoryItemGridLookUpEdit repGLUEdit) { repGLUEdit.EditValueChanging += (sender, e) => { this.BeginInvoke(new System.Windows.Forms.MethodInvoker(() => { GridLookUpEdit edit = sender as GridLookUpEdit; DevExpress.XtraGrid.Views.Grid.GridView view = edit.Properties.View as DevExpress.XtraGrid.Views.Grid.GridView; //获取GriView私有变量 System.Reflection.FieldInfo extraFilter = view.GetType().GetField("extraFilter",System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); List<DevExpress.Data.Filtering.CriteriaOperator> columnsOperators = new List<DevExpress.Data.Filtering.CriteriaOperator>(); foreach (GridColumn col in view.VisibleColumns) { if (col.Visible && col.ColumnType == typeof(string)) columnsOperators.Add(new DevExpress.Data.Filtering.FunctionOperator(DevExpress.Data.Filtering.FunctionOperatorType.Contains, new DevExpress.Data.Filtering.OperandProperty(col.FieldName), new DevExpress.Data.Filtering.OperandValue(edit.Text))); } string filterCondition = new DevExpress.Data.Filtering.GroupOperator(DevExpress.Data.Filtering.GroupOperatorType.Or, columnsOperators).ToString(); extraFilter.SetValue(view, filterCondition); //获取GriView中处理列过滤的私有方法 System.Reflection.MethodInfo ApplyColumnsFilterEx = view.GetType().GetMethod("ApplyColumnsFilterEx", System.Reflection.BindingFlags.NonPublic | System.Reflection.BindingFlags.Instance); ApplyColumnsFilterEx.Invoke(view, null); })); }; }


 

Guess you like

Origin www.cnblogs.com/wwwbdabc/p/11769293.html