Exemple #1
0
        public DictionaryEditControl()
        {
            InitializeComponent();
            var commonEditController = new CommonObjectEditController();

            commonEditController.StartEditObject(null);
            this.ColumnObject.ColumnEdit = commonEditController.CreateRepositoryItem();
        }
Exemple #2
0
        /// <summary>
        /// 编辑对象(允许新增和删除)
        /// </summary>
        /// <param name="objectType">对象类型</param>
        /// <param name="obj">待编辑的对象</param>
        /// <returns>DialogReturn</returns>
        public static DialogReturn ShowEditObjectDialog(Type objectType, object obj)
        {
            var commonObjectEditController = new CommonObjectEditController();

            commonObjectEditController.StartEditObject(objectType);
            var objectEditControl = commonObjectEditController.CreateEditControl(objectType) as BaseObjectEditControl;

            objectEditControl.EditValue = obj;
            return(WinFormPublic.ShowDialog(objectEditControl));
        }
Exemple #3
0
        /// <summary>
        /// 编辑对象(不允许新增和删除)
        /// </summary>
        /// <param name="obj">待编辑的对象</param>
        /// <returns>DialogReturn</returns>
        public static DialogReturn ShowEditObjectDialog(object obj)
        {
            obj.CheckNotNull("待编辑对象不能为空");
            var commonObjectEditController = new CommonObjectEditController();
            var objType = obj.GetType();

            commonObjectEditController.StartEditObject(null);
            var objectEditControl = commonObjectEditController.CreateEditControl(obj.GetType()) as BaseObjectEditControl;

            objectEditControl.EditValue = obj;
            return(WinFormPublic.ShowDialog(objectEditControl));
        }
Exemple #4
0
        /// <summary>
        /// 编辑字典元素
        /// </summary>
        /// <param name="dict">字典</param>
        /// <param name="key">键</param>
        /// <returns>DialogReturn</returns>
        public static DialogReturn ShowEditDictionaryElementDialog(IDictionary dict, object key)
        {
            dict.CheckNotNull("待编辑字典不能为空");
            var commonObjectEditController = new CommonObjectEditController();

            commonObjectEditController.StartEditDictionaryElement(dict, key);
            var obj = dict[key];
            var objectEditControl = commonObjectEditController.CreateEditControl(null) as BaseObjectEditControl;

            objectEditControl.EditValue = obj;
            return(WinFormPublic.ShowDialog(objectEditControl));
        }
Exemple #5
0
        /// <summary>
        /// 编辑列表元素
        /// </summary>
        /// <param name="list">列表</param>
        /// <param name="index">索引</param>
        /// <returns>DialogReturn</returns>
        public static DialogReturn ShowEditListElementDialog(IList list, int index)
        {
            list.CheckNotNull("待编辑列表不能为空");
            var commonObjectEditController = new CommonObjectEditController();

            commonObjectEditController.StartEditListElement(list, index);
            var obj = list[index];
            var objectEditControl = commonObjectEditController.CreateEditControl(null) as BaseObjectEditControl;

            objectEditControl.EditValue = obj;
            return(WinFormPublic.ShowDialog(objectEditControl));
        }
Exemple #6
0
        /// <summary>
        /// 编辑属性
        /// </summary>
        /// <param name="componentObject">组件对象</param>
        /// <param name="propertyName"></param>
        /// <returns>DialogReturn</returns>
        public static DialogReturn ShowEditPropertyDialog(object componentObject, string propertyName)
        {
            var commonObjectEditController = new CommonObjectEditController();

            commonObjectEditController.StartEditProperty(componentObject, propertyName);
            var propDesc          = ReflectionPublic.GetPropertyDescriptor(componentObject.GetType(), propertyName);
            var propObj           = propDesc.GetValue(componentObject);
            var objectEditControl = commonObjectEditController.CreateEditControl(propDesc.PropertyType) as BaseObjectEditControl;

            objectEditControl.EditValue = propObj;
            return(WinFormPublic.ShowDialog(objectEditControl));
        }
        private void PropertyGridControl_CustomRecordCellEdit(object sender, DevExpress.XtraVerticalGrid.Events.GetCustomRowCellEditEventArgs e)
        {
            RepositoryItem repositoryItem = null;
            var            propDesc       = PropertyGridControl.GetPropertyDescriptor(e.Row);

            if (propDesc == null)
            {
                return;
            }
            var controller = Controller as ObjectPropertyEditController;

            if (controller != null)
            {
                var editController = controller.GetPredefinedEditController(propDesc.PropertyType, propDesc.Name);
                if (editController != null)
                {
                    repositoryItem = editController.CreateRepositoryItem(propDesc.PropertyType);
                }
            }

            if (repositoryItem == null)
            {
                if (propDesc.PropertyType.IsAddon())
                {
                    // 如果是插件,统一使用CommonObjectEditControl,这样可以新增空对象
                    var editController = new CommonObjectEditController();
                    editController.StartEditProperty(EditValue, propDesc.Name);
                    repositoryItem = editController.CreateRepositoryItem(propDesc.PropertyType);
                }
                else
                {
                    repositoryItem = EditorPublic.CreateRepositoryItem(propDesc);
                }
            }

            if (repositoryItem != null)
            {
                e.RepositoryItem = repositoryItem;
            }
        }
        /// <summary>
        /// 根据对象填充属性字段
        /// </summary>
        /// <param name="groupItem">组项目</param>
        /// <param name="objType">对象类型</param>
        private void RetrieveFields(LayoutControlGroup groupItem, Type objType)
        {
            UIPublic.ShowWaitingForm();
            this.DataLayoutControl.CloseControl();
            EditControls.Clear();
            this.DataLayoutControl.Clear(true, true);

            var controller = Controller as ObjectLayoutEditController;

            if (objType == null)
            {
                return;
            }

            this.DataLayoutControl.SuspendLayout();
            TabbedControlGroup tabbledGroup = null;

            foreach (PropertyDescriptor propDesc in TypeDescriptor.GetProperties(objType))
            {
                if (!propDesc.IsBrowsable)
                {
                    continue;
                }

                BaseEditController editController = null;
                Control            editControl    = null;

                if (controller != null)
                {
                    editController = controller.GetPredefinedEditController(propDesc.PropertyType, propDesc.Name);
                }

                if (editController == null)
                {
                    if (propDesc.PropertyType.IsAddon())
                    {
                        var commonEditController = new CommonObjectEditController();
                        commonEditController.StartEditProperty(EditValue, propDesc.Name);
                        editController = commonEditController;
                    }
                    else
                    {
                        editController = EditorPublic.GetEditController(propDesc);
                    }
                }

                editControl = editController.CreateEditControl(propDesc.PropertyType);

                if (editControl.GetType().GetProperty("EditValue") == null)
                {
                    throw new Exception("编辑控件必须实现EditValue属性");
                }

                LayoutControlItem layoutControlItem = null;
                if (editControl is BaseObjectEditControl)
                {
                    if (tabbledGroup == null)
                    {
                        tabbledGroup = groupItem.AddTabbedGroup();
                    }
                    var layoutGroupItem = tabbledGroup.AddTabPage();
                    layoutGroupItem.Name = "Group_" + propDesc.Name;
                    layoutGroupItem.Text = propDesc.DisplayName;
                    layoutGroupItem.CustomizationFormText = "组_" + propDesc.DisplayName;
                    layoutGroupItem.Padding = new DevExpress.XtraLayout.Utils.Padding(0);

                    layoutControlItem = layoutGroupItem.AddItem();
                    layoutControlItem.TextLocation = DevExpress.Utils.Locations.Top;
                }
                else
                {
                    layoutControlItem = groupItem.AddItem();
                    layoutControlItem.TextLocation = DevExpress.Utils.Locations.Left;
                }
                EditControls.Add(propDesc, editControl);
                editControl.Tag  = propDesc;
                editControl.Name = propDesc.Name;

                layoutControlItem.Control = editControl;
                layoutControlItem.Name    = propDesc.Name;
                layoutControlItem.Text    = propDesc.DisplayName;
                layoutControlItem.CustomizationFormText = propDesc.DisplayName;

                if (editControl is BaseObjectEditControl)
                {
                    layoutControlItem.TextVisible = false;
                }
                else
                {
                    layoutControlItem.TextVisible = true;
                }
            }
            this.DataLayoutControl.ResumeLayout();
            this.DataLayoutControl.SetDefaultLayout();

            // 读取布局数据
            if (controller != null && controller.LayoutData.IsNotNullOrEmpty())
            {
                this.DataLayoutControl.SetLayoutData(controller.LayoutData);
            }
            UIPublic.CloseWaitingForm();
        }