Ejemplo n.º 1
0
        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();
        }