XAF 字符串属性ComboBox的数据源DataSourcePropertyAttribute提供动态选择的键和值

 

 

 

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

 

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

    }

 

转载于:https://www.cnblogs.com/Tonyyang/archive/2011/05/22/2053641.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值