支持模糊查询的LookUpEdit:1.RepositoryItemLookupEditmQney
using System.Collections.Generic;
using System.Reflection;
using DevExpress.Data.Filtering;
using DevExpress.Utils;
using DevExpress.XtraEditors.Controls;
using DevExpress.XtraEditors.Drawing;
using DevExpress.XtraEditors.ListControls;
using DevExpress.XtraEditors.Registrator;
using DevExpress.XtraEditors.Repository;
using DevExpress.XtraEditors.ViewInfo;
namespace CYYFCheckupMgr.OccupationalDisease.Util
{ /// <summary>
/// RepositoryItemLookupEditmQney用于GridControl的模糊筛选控件
/// author CYTD Young
/// 2016-01-30 01:52:05
/// music: Pink Floyd - Have A Cigar
/// </summary>
public class RepositoryItemLookupEditmQney : RepositoryItemLookUpEdit
{
public const string EditNamemQney = "RepositoryItemLookupEditmQney";
public override string EditorTypeName
{
get
{
return EditNamemQney;
}
}
static RepositoryItemLookupEditmQney()
{
RegisterCustomEdit();
}
public RepositoryItemLookupEditmQney()
{
AllowNullInput = DefaultBoolean.True;
NullText = "请选择或模糊查询";
ShowHeader = false;
ShowFooter = false;
AutoHeight = false;
PopupSizeable = false;
TextEditStyle = TextEditStyles.Standard;
}
internal CustomLookUpListDataAdapter CustomDataAdapter
{
get { return (CustomLookUpListDataAdapter)DataAdapter; }
}
public static void RegisterCustomEdit()
{
EditorRegistrationInfo.Default.Editors.Add(new EditorClassInfo(EditNamemQney,
typeof(LookUpEditmQney), typeof(RepositoryItemLookupEditmQney),
typeof(LookUpEditViewInfo), new ButtonEditPainter(), true));
}
protected override LookUpListDataAdapter CreateDataAdapter()
{
return new CustomLookUpListDataAdapter(this);
}
public override void Assign(RepositoryItem item)
{
BeginUpdate();
try
{
base.Assign(item);
RepositoryItemLookupEditmQney source = item as RepositoryItemLookupEditmQney;
if (source == null) return;
}
finally
{
EndUpdate();
}
}
internal class CustomLookUpListDataAdapter : LookUpListDataAdapter
{
public CustomLookUpListDataAdapter(RepositoryItemLookUpEdit item)
: base(item)
{
protected override string CreateFilterExpression()
{
if (Item.TextEditStyle == TextEditStyles.Standard)
{
string likeClause = "%" + FilterPrefix + "%";
List<CriteriaOperator> bops = new List<CriteriaOperator>();
foreach (LookUpColumnInfo column in Item.Columns)
bops.Add(new BinaryOperator(column.FieldName, likeClause, BinaryOperatorType.Like));
bops.Add(new BinaryOperator(Item.DisplayMember, likeClause, BinaryOperatorType.Like));
return new GroupOperator(GroupOperatorType.Or, bops).ToString();
}
else
return base.CreateFilterExpression();
}