public DictionaryEditControl() { InitializeComponent(); var commonEditController = new CommonObjectEditController(); commonEditController.StartEditObject(null); this.ColumnObject.ColumnEdit = commonEditController.CreateRepositoryItem(); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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)); }
/// <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(); }