• 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 { getset; }
            
    public string Value { getset; }
        }
    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();
            }

        }
  • 相关阅读:
    一个强悍的强制删除文件的批处理
    禁止用户使用QQ聊天工具
    《项目经理指导手册》附录2项目经理面试题
    《项目经理指导手册》 附录1每日站会评价表
    《项目经理指导手册》调研篇
    《项目经理指导手册》前言
    《项目经理指导手册》 会议篇
    从Log4j2今天的漏洞说起.
    Asp.Net将Excel数据导入Sql Server数据库的的例子
    Winform窗体程序输入法全角问题
  • 原文地址:https://www.cnblogs.com/Tonyyang/p/2053641.html
Copyright © 2020-2023  润新知