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();
}
}