using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using Lskj.Core; using DevExpress.XtraEditors; using DevExpress.XtraEditors.Controls; using DevExpress.XtraGrid.Views.Grid; using System.Reflection; using DevExpress.Data.Filtering; namespace CsHospital.UserControls { public partial class UserQkbw : UserControl { public UserQkbw() { InitializeComponent(); DBConfig.Instance.CreateConnection(); string sql = string.Format("SELECT dm_ssbw.dm,dm_ssbw.mc ,dm_ssbw.jp FROM dm_ssbw "); DataTable sbw = SqlHelper.ExecuteDataTable(sql); this.GridLookUpEdit1.Properties.DataSource = sbw; } private void gridLookUpEdit1_Popup(object sender, EventArgs e) { GridLookUpEdit edit = sender as GridLookUpEdit; FilterLookup(sender, new string[] { "mc", "dm", "jp" });//中文,全拼英,简拼 } private void gridLEdit1_EditValueChanging(object sender, ChangingEventArgs e) { this.BeginInvoke(new System.Windows.Forms.MethodInvoker(delegate { FilterLookup(sender, new string[] { "mc", "dm", "jp" }); })); } private void gridLUpEdit1_TextChanged(object sender, EventArgs e) { GridLookUpEdit edit = sender as GridLookUpEdit; edit.SelectionStart = edit.Text.Length; } /// /// 拼英模糊查询的关键方法 /// /// /// private void FilterLookup(object sender, string[] arrFilterField) { GridLookUpEdit edit = sender as GridLookUpEdit; GridView gridView = edit.Properties.View as GridView; FieldInfo fi = gridView.GetType().GetField("extraFilter", BindingFlags.NonPublic | BindingFlags.Instance); CriteriaOperator[] arrCriteriaOperator = new CriteriaOperator[arrFilterField.Length]; for (int i = 0; i < arrFilterField.Length; i++) { arrCriteriaOperator[i] = new BinaryOperator(arrFilterField[i], "%" + edit.AutoSearchText + "%", BinaryOperatorType.Like); } string filterCondition = new GroupOperator(GroupOperatorType.Or, arrCriteriaOperator).ToString(); fi.SetValue(gridView, filterCondition); MethodInfo mi = gridView.GetType().GetMethod("ApplyColumnsFilterEx", BindingFlags.NonPublic | BindingFlags.Instance); mi.Invoke(gridView, null); } /// /// 下拉框对象 /// public DevExpress.XtraEditors.GridLookUpEdit GridLookUpEditObj { get { return GridLookUpEdit1; } } /// /// 回车触发下一个 /// /// /// public void textBox_KeyPress(object sender, KeyPressEventArgs e) { GridLookUpEdit gu = sender as GridLookUpEdit; if (e.KeyChar == (char)Keys.Enter) { SendKeys.Send("{tab}"); } } } }