private string _ActionId;
[DataSourceProperty("list")]
[Custom("PropertyEditorType", "MemberLevelSecurityDemo.Module.WinStringArrayValueComboPropertyEditor")]
public string ActionId
{
get
{
return _ActionId;
}
set
{
SetPropertyValue("ActionId", ref _ActionId, value);
}
}
public List<KeyValue> list = new List<KeyValue>() { new KeyValue("A", "B") };
[DataSourceProperty("list")]
[Custom("PropertyEditorType", "MemberLevelSecurityDemo.Module.WinStringArrayValueComboPropertyEditor")]
public string ActionId
{
get
{
return _ActionId;
}
set
{
SetPropertyValue("ActionId", ref _ActionId, value);
}
}
public List<KeyValue> list = new List<KeyValue>() { new KeyValue("A", "B") };
public class KeyValue
{
public KeyValue(string key, string value)
{
this.Key = key; this.Value = value;
}
public string Key { get; set; }
public string Value { get; set; }
}
{
public KeyValue(string key, string value)
{
this.Key = key; this.Value = value;
}
public string Key { get; set; }
public string Value { get; set; }
}
using System;
using System.ComponentModel;
using DevExpress.Xpo;
using DevExpress.ExpressApp;
using DevExpress.ExpressApp.Win.Editors;
using DevExpress.ExpressApp.Model;
using DevExpress.XtraEditors;
using DevExpress.XtraEditors.Controls;
using DevExpress.XtraEditors.Repository;
public class WinStringArrayValueComboPropertyEditor : WinPropertyEditor
{
private string dataSourceProperty = string.Empty;
public WinStringArrayValueComboPropertyEditor(Type objectType, IModelMemberViewItem info)
: base(objectType, info)
{
this.ControlBindingProperty = "EditValue";
dataSourceProperty = info.DataSourceProperty;
}
protected override object CreateControlCore()
{
DevExpress.XtraEditors.LookUpEdit combo = CreateControl();
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();
////string[] values = (string[])((XPCustomObject)this.CurrentObject).GetMemberValue(this.dataSourceProperty);
object datasource = (t.GetField(this.dataSourceProperty)).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.ComponentModel;
using DevExpress.Xpo;
using DevExpress.ExpressApp;
using DevExpress.ExpressApp.Win.Editors;
using DevExpress.ExpressApp.Model;
using DevExpress.XtraEditors;
using DevExpress.XtraEditors.Controls;
using DevExpress.XtraEditors.Repository;
public class WinStringArrayValueComboPropertyEditor : WinPropertyEditor
{
private string dataSourceProperty = string.Empty;
public WinStringArrayValueComboPropertyEditor(Type objectType, IModelMemberViewItem info)
: base(objectType, info)
{
this.ControlBindingProperty = "EditValue";
dataSourceProperty = info.DataSourceProperty;
}
protected override object CreateControlCore()
{
DevExpress.XtraEditors.LookUpEdit combo = CreateControl();
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();
////string[] values = (string[])((XPCustomObject)this.CurrentObject).GetMemberValue(this.dataSourceProperty);
object datasource = (t.GetField(this.dataSourceProperty)).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/