using System;
using System.Collections.Generic;
using System.Linq;
using System.ComponentModel;
using DevExpress.ExpressApp;
using DevExpress.ExpressApp.Win.Editors;
using DevExpress.ExpressApp.Model;
using DevExpress.XtraEditors;
using System.Reflection;
using DevExpress.XtraEditors.Controls;
public class WinCustomDataSourceLookupEditor : WinPropertyEditor
{
private string dataSourceProperty = string.Empty;
public WinCustomDataSourceLookupEditor(Type objectType, IModelMemberViewItem info)
: base(objectType, info)
{
this.ControlBindingProperty = "EditValue";
dataSourceProperty = info.DataSourceProperty;
}
protected override object CreateControlCore()
{
DevExpress.XtraEditors.LookUpEdit combo = CreateControl();
combo.Properties.DisplayMember = "Key";
combo.Properties.ValueMember = "Value";
LookUpColumnInfo luci1 = new LookUpColumnInfo("Key","名稱");
LookUpColumnInfo luci2 = new LookUpColumnInfo("Value","ID");
combo.Properties.Columns.Add(luci1);
combo.Properties.Columns.Add(luci2);
combo.Properties.QueryPopUp += combo_QueryPopup;
return combo;
}
protected override void Dispose(bool disposing)
{
LookUpEdit combo = this.Control as LookUpEdit;
if (combo != null)
{
combo.Properties.QueryPopUp -= combo_QueryPopup;
}
base.Dispose(disposing);
}
protected override void OnControlCreated()
{
UpdateComboValues();
base.OnControlCreated();
}
private DevExpress.XtraEditors.LookUpEdit CreateControl()
{
LookUpEdit combo = new LookUpEdit();
combo.Properties.DisplayMember = "Key";
combo.Properties.ValueMember = "Value";
combo.Properties.DropDownRows = 10;
//combo.Properties.TextEditStyle = this.AllowEdit.ResultValue ? TextEditStyles.Standard : TextEditStyles.DisableTextEditor;
// Do any more combo setups here
return combo;
}
private void UpdateComboValues()
{
if (this.CurrentObject != null)
{
LookUpEdit combo = (LookUpEdit)this.Control;
try
{
Type t = this.CurrentObject.GetType();
object datasource = null;
////string[] values = (string[])((XPCustomObject)this.CurrentObject).GetMemberValue(this.dataSourceProperty);
PropertyInfo fi = t.GetProperty(this.dataSourceProperty);
if(fi != null )
{
datasource = fi.GetValue(this.CurrentObject, null);// fi.GetValue(this.CurrentObject);
if (datasource != null)
{
combo.Properties.DataSource = datasource;
}
}
}
catch (Exception exception1)
{
Exception ex = exception1;
throw new UserFriendlyException(ex);
}
}
}
private void combo_QueryPopup(object sender, CancelEventArgs e)
{
UpdateComboValues();
}
}
using System.Collections.Generic;
using System.Linq;
using System.ComponentModel;
using DevExpress.ExpressApp;
using DevExpress.ExpressApp.Win.Editors;
using DevExpress.ExpressApp.Model;
using DevExpress.XtraEditors;
using System.Reflection;
using DevExpress.XtraEditors.Controls;
public class WinCustomDataSourceLookupEditor : WinPropertyEditor
{
private string dataSourceProperty = string.Empty;
public WinCustomDataSourceLookupEditor(Type objectType, IModelMemberViewItem info)
: base(objectType, info)
{
this.ControlBindingProperty = "EditValue";
dataSourceProperty = info.DataSourceProperty;
}
protected override object CreateControlCore()
{
DevExpress.XtraEditors.LookUpEdit combo = CreateControl();
combo.Properties.DisplayMember = "Key";
combo.Properties.ValueMember = "Value";
LookUpColumnInfo luci1 = new LookUpColumnInfo("Key","名稱");
LookUpColumnInfo luci2 = new LookUpColumnInfo("Value","ID");
combo.Properties.Columns.Add(luci1);
combo.Properties.Columns.Add(luci2);
combo.Properties.QueryPopUp += combo_QueryPopup;
return combo;
}
protected override void Dispose(bool disposing)
{
LookUpEdit combo = this.Control as LookUpEdit;
if (combo != null)
{
combo.Properties.QueryPopUp -= combo_QueryPopup;
}
base.Dispose(disposing);
}
protected override void OnControlCreated()
{
UpdateComboValues();
base.OnControlCreated();
}
private DevExpress.XtraEditors.LookUpEdit CreateControl()
{
LookUpEdit combo = new LookUpEdit();
combo.Properties.DisplayMember = "Key";
combo.Properties.ValueMember = "Value";
combo.Properties.DropDownRows = 10;
//combo.Properties.TextEditStyle = this.AllowEdit.ResultValue ? TextEditStyles.Standard : TextEditStyles.DisableTextEditor;
// Do any more combo setups here
return combo;
}
private void UpdateComboValues()
{
if (this.CurrentObject != null)
{
LookUpEdit combo = (LookUpEdit)this.Control;
try
{
Type t = this.CurrentObject.GetType();
object datasource = null;
////string[] values = (string[])((XPCustomObject)this.CurrentObject).GetMemberValue(this.dataSourceProperty);
PropertyInfo fi = t.GetProperty(this.dataSourceProperty);
if(fi != null )
{
datasource = fi.GetValue(this.CurrentObject, null);// fi.GetValue(this.CurrentObject);
if (datasource != null)
{
combo.Properties.DataSource = datasource;
}
}
}
catch (Exception exception1)
{
Exception ex = exception1;
throw new UserFriendlyException(ex);
}
}
}
private void combo_QueryPopup(object sender, CancelEventArgs e)
{
UpdateComboValues();
}
}
欢迎转载,转载请注明出处:http://www.cnblogs.com/Tonyyang/