private void EditColumns(object sender, EventArgs args) { IShellControlDev shellControlDev = this.Control as IShellControlDev; FormElementDataListEntityDev formElementDataListEntityDev = shellControlDev.Entity as FormElementDataListEntityDev; using (FormCollectionEditor formCollectionEditor = new FormCollectionEditor(formElementDataListEntityDev.DataColumns, true)) { formCollectionEditor.Title = Language.Current.SEPaginationDataGridViewDev_Verb_FormCollectionEditorTitle; formCollectionEditor.OnAdd += new FormCollectionEditor.CollectionEditorAddEventHandler(formCollectionEditor_OnAdd); formCollectionEditor.OnEdit += new FormCollectionEditor.CollectionEditorEditEventHandler(formCollectionEditor_OnEdit); if (formCollectionEditor.ShowDialog() == DialogResult.OK) { #region 处理可撤销的工作单元 if (formCollectionEditor.SupportCancel) { formCollectionEditor.UndoTransaction.SetName(Language.Current.SEPaginationDataGridViewDev_EditColumns_UndoTransaction_Name); //在可撤销单元被撤销或重做时,刷新设计器中呈现的列 formCollectionEditor.UndoTransaction.Action = new Action <SEUndoUnitAbstract, SEUndoEngine.Type>( delegate(SEUndoUnitAbstract undoUnit, SEUndoEngine.Type type) { SEUndoEngineFormDesigner undoEngine = undoUnit.UndoEngine as SEUndoEngineFormDesigner; undoEngine.UpdateView(shellControlDev.Entity); undoEngine.UpdatePropertyGrid(false); }); _windowDesignService.AddUndoUnit(formCollectionEditor.UndoTransaction); } #endregion shellControlDev.UpdateView(); _windowDesignService.MakeDirty(); } } }
private void btnOK_Click(object sender, EventArgs e) { #region 数据验证 if (!this.DoValidate()) { return; } #endregion #region 检查指定的代码在正在编辑的列表中是否已存在 //检查指定的代码在正在编辑的列表中是否已存在 if (this.EditCollection != null) { FormElementDataListTextBoxColumnEntityDev formElementDataColumnEntityDev; foreach (object obj in this.EditCollection) { if (obj == this.FormElementDataColumnEntity) { continue; } formElementDataColumnEntityDev = obj as FormElementDataListTextBoxColumnEntityDev; if (formElementDataColumnEntityDev.Code.Equals(this.txtCode.Text)) { MessageBox.Show( Language.Current.FormSEPaginationDataGridViewDevColumnAdd_MessageElementCodeExist, CommonLanguage.Current.MessageCaption_Notice, MessageBoxButtons.OK, MessageBoxIcon.Information ); return; } } } #endregion #region 如果不是编辑状态,new一个新的FormElementDataListTextBoxColumnEntityDev if (_isEdit == false) { this.FormElementDataColumnEntity = new FormElementDataListTextBoxColumnEntityDev(); this.FormElementDataColumnEntity.Id = Guid.NewGuid().ToString(); } #endregion #region 查检指定的代码是否已被占用 //查检指定的代码是否已被占用 if (this.FormElementDataColumnEntity.Code != this.txtCode.Text) { //检查指定的代码在窗体元素中是否已存在 //这里要忽略掉Id,因为到FormEntity中去检查时,FormEntity中的数据列与正在编辑的数据列不是同步的 //一个数据列对象的code如果由a改成b,只要还没保存,那FormEntity中的就还是a,如果由b再改回a //这时到FormEntity中去查,就会报a已被占用,所以要忽略掉Id if (!this.FormEntity.ValidateCode(this.txtCode.Text, FormElementDataColumnEntity.Id)) { MessageBox.Show( Language.Current.FormSEPaginationDataGridViewDevColumnAdd_MessageElementCodeExist, CommonLanguage.Current.MessageCaption_Notice, MessageBoxButtons.OK, MessageBoxIcon.Information ); return; } } #endregion #region 保存数据 this.FormElementDataColumnEntity.Name = txtName.Text; this.FormElementDataColumnEntity.Code = txtCode.Text; this.FormElementDataColumnEntity.Text = txtText.Text; this.FormElementDataColumnEntity.IsBind = radioButtonBind.Checked; this.FormElementDataColumnEntity.Visible = cbVisible.Checked; if (ddlDataItem.SelectedValue != null) { this.FormElementDataColumnEntity.DataItemId = this._dataEntityId + "." + ddlDataItem.SelectedValue.ToString(); } this.FormElementDataColumnEntity.DataPropertyName = txtDataPropertyName.Text; #region 数据规则 //数据规则 IFormElementDataListColumnDataRule dataRule = this.ddlDataRule.SelectedItem as IFormElementDataListColumnDataRule; this.FormElementDataColumnEntity.DataRule = dataRule.GetParameter(); #endregion if (this.ShellControlDev == null) { this.DialogResult = DialogResult.OK; this.Close(); } else { this.btnCancel.Text = Language.Current.FormSEPaginationDataGridViewDevColumnAdd_ButtonClose; FormElementDataListEntityDev.AddColumnCommand command = new FormElementDataListEntityDev.AddColumnCommand(this._entity) { Column = this._formElementDataColumnEntity }; _windowDesignService.ExecuteCommand(command, new Action <SEUndoUnitAbstract, SEUndoEngine.Type>( delegate(SEUndoUnitAbstract undoUnit, SEUndoEngine.Type type) { SEUndoEngineFormDesigner undoEngine = undoUnit.UndoEngine as SEUndoEngineFormDesigner; undoEngine.UpdateView(this._entity); undoEngine.UpdatePropertyGrid(false); })); ResetControl(); this.ShellControlDev.UpdateView(); } #endregion _windowDesignService.MakeDirty(); }