using System; using System.Collections.Generic; using DevExpress.XtraEditors.Controls; using DevExpress.XtraEditors.Repository; namespace SiwiFms.Helper { public sealed class ColumnEditEx : RepositoryItemLookUpEdit { public ColumnEditEx() { } /// /// /// 数据源 /// 值字段 /// 显示字段 /// 需要显示的列 /// 空值 /// 以该列作为筛选 /// 文本编辑模式 /// 搜索模式 public ColumnEditEx(object source, string value = "", string displayName = "", IEnumerable columns = null, string nullText = "", int autoSearchColumnIndex = 0, TextEditStyles textEditStyles = TextEditStyles.Standard, SearchMode searchMode = SearchMode.OnlyInPopup) { if (source.GetType().BaseType == typeof (Enum)) { value = "Key"; displayName = "Value"; columns = new[] {"Value", "Key"}; source = EnumUtil.EnumToDictionary(source.GetType()); } DataSource = source; DisplayMember = displayName; ValueMember = value; if (columns != null) { Columns.Clear(); foreach (string column in columns) { Columns.Add(new LookUpColumnInfo(column)); } } AutoSearchColumnIndex = autoSearchColumnIndex; NullText = nullText; TextEditStyle = textEditStyles; //要使用户可以输入,这里须设为Standard SearchMode = searchMode; //自动过滤掉不需要显示的数据,可以根据需要变化 } } }