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; } }
private void PropertyGridControl_PopupMenuShowing(object sender, DevExpress.XtraVerticalGrid.Events.PopupMenuShowingEventArgs e) { if (e.Row != null) { var controller = Controller as ObjectPropertyEditController; if (controller == null) { return; } var propDesc = PropertyGridControl.GetPropertyDescriptor(e.Row); if (propDesc != null) { // 修改字段标题 var menuChangeCaption = new DXEditMenuItem("标题(&C)" , new TextEditController().CreateRepositoryItem(typeof(string))); menuChangeCaption.Width = 100; menuChangeCaption.EditValue = e.Row.Properties.Caption; menuChangeCaption.BeginGroup = true; menuChangeCaption.EditValueChanged += (s, a) => { if (menuChangeCaption.EditValue.IsNull()) { e.Row.Properties.Caption = propDesc.Name; } else { e.Row.Properties.Caption = (string)menuChangeCaption.EditValue; } }; e.Menu.Items.Add(menuChangeCaption); // 增加删除行菜单 var menuHideRow = new DXMenuItem("隐藏行(&D)" , (s, a) => { e.Row.Visible = false; }); e.Menu.Items.Add(menuHideRow); // 增加更改编辑器菜单 var menuChangeEditor = new DXMenuItem("更改编辑器(&E)..." , (s, a) => { Type editControllerType; if (EditorPublic.SelectEditControllerType(propDesc.PropertyType, out editControllerType) == DialogReturn.OK) { if (editControllerType != null) { var editController = editControllerType.CreateInstance() as BaseEditController; if (controller != null) { controller.SetPredfinedEditController(propDesc.Name, editController.GetType()); } } } } , Properties.Resources.renamedatasource_16x16); menuChangeEditor.BeginGroup = true; e.Menu.Items.Add(menuChangeEditor); // 增加恢复编辑器菜单 var menuRecoverEditor = new DXMenuItem("恢复编辑器(&R)" , (s, a) => { if (UIPublic.ShowYesNoDialog("您确定要恢复默认的编辑器吗?") == DialogReturn.Yes) { controller.RemovePredefinedEditController(propDesc.Name); } } , Properties.Resources.clearformatting_16x16); e.Menu.Items.Add(menuRecoverEditor); } // 恢复所有编辑器 var menuClearEditors = new DXMenuItem("恢复所有编辑器(&C)" , (s, a) => { if (UIPublic.ShowYesNoDialog("您确定要恢复所有默认的编辑器吗?") == DialogReturn.Yes) { controller.ClearPredefinedEditControllers(); } } , Properties.Resources.clear_16x16); menuClearEditors.BeginGroup = true; e.Menu.Items.Add(menuClearEditors); } }
protected virtual void FirePropertyValueChanged(CellValueChangedEventArgs args) { PropertyValueChanged?.Invoke(this, new PropertyValueChangedEventArgs(args, PropertyGridControl.GetPropertyDescriptor(args.Row))); }