コード例 #1
0
        /// <summary>
        /// 双击grid中的信息,打开详细界面
        /// </summary>
        protected virtual void ShowDetailForm()
        {
            //如果异步窗口的UIRule不是从AbstractClientRule继承而来的,则不能双击打开
            if (!(this._AsynQueryRule is IClientRule))
            {
                return;
            }
            MB.Util.Model.ModuleCommandInfo commandInfo = this._AsynQueryRule.ModuleTreeNodeInfo.Commands.Find
                                                              (o => string.Compare(o.CommandID, MB.BaseFrame.SOD.MODULE_COMMAND_ADD, true) == 0);

            var cInfo = this._AsynQueryRule.ModuleTreeNodeInfo.Commands.Find
                            (o => string.Compare(o.CommandID, MB.BaseFrame.SOD.MODULE_COMMAND_EDIT, true) == 0);

            //如果不存在就去新增加的默认配置
            if (cInfo != null)
            {
                commandInfo = cInfo;
            }

            if (commandInfo == null)
            {
                MB.WinBase.MessageBoxEx.Show(string.Format("模块{0} 的编辑窗口没有配置!", this._AsynQueryRule.ModuleTreeNodeInfo.Name));
                return;
            }

            IExtenderEditForm baseEditForm = null;

            IClientRule clientRule = _AsynQueryRule as IClientRule;

            if (clientRule == null)
            {
                throw new APPException("异步模块如果要打开详细信息,UI Rule必需继承自AbstractClientRule", APPMessageType.DisplayToUser);
            }

            try
            {
                MB.WinBase.IFace.IForm editForm = MB.WinClientDefault.UICommand.UICreateHelper.Instance.CreateObjectEditForm(
                    commandInfo, ClientRuleObject as IClientRule, ObjectEditType.OpenReadOnly, _BindingSource);
                Form frm = editForm as Form;

                baseEditForm = editForm as IExtenderEditForm;
                if (baseEditForm != null)
                {
                    baseEditForm.MainBindingGridView = new MB.WinClientDefault.Common.MainViewDataNavigator(gridViewMain);
                }

                frm.ShowDialog();
            }
            catch (Exception ex)
            {
                throw ex;
            }
            finally
            {
                if (baseEditForm != null)
                {
                    baseEditForm.DisposeBindingEvent();
                }
            }
        }
コード例 #2
0
        /// <summary>
        /// 根据指定的参数创建对象编辑窗口。
        /// </summary>
        /// <param name="commandInfo"></param>
        /// <param name="clientRuleObject"></param>
        /// <param name="editType"></param>
        /// <param name="bindingSource"></param>
        /// <returns></returns>
        public MB.WinBase.IFace.IForm CreateObjectEditForm(MB.Util.Model.ModuleCommandInfo commandInfo,
                                                           IClientRule clientRuleObject, ObjectEditType editType, BindingSourceEx bindingSource)
        {
            string[] formSetting    = commandInfo.UIView.Split(',');
            object[] formCreatePars = new object[] { clientRuleObject, editType, bindingSource };

            MB.WinBase.IFace.IForm winForm = MB.Util.DllFactory.Instance.LoadObject(formSetting[0], formCreatePars, formSetting[1]) as MB.WinBase.IFace.IForm;
            MB.Util.TraceEx.WriteIf(winForm != null, string.Format("请检查数据库中该功能模块对应的显示窗口{0},是否设置出错!", commandInfo.UIView), MB.Util.APPMessageType.SysErrInfo);
            return(winForm);
        }
コード例 #3
0
        /// <summary>
        /// 构造函数...
        /// </summary>
        /// <param name="clientRuleObject"></param>
        public DefaultViewForm(IClientRule clientRuleObject)
            : base(clientRuleObject)
        {
            InitializeComponent();

            this.Load         += new EventHandler(DefaultViewForm_Load);
            grdCtlMain.Dock    = DockStyle.Fill;
            pivGrdCtlMain.Dock = DockStyle.Fill;

            _ToolTip = new ToolTip();

            lnkNextPage.Click     += new EventHandler(lnkNextPage_Click);
            lnkPreviousPage.Click += new EventHandler(lnkPreviousPage_Click);
        }
コード例 #4
0
        /// <summary>
        /// 创建基于Xtra工具栏的默认标准编辑窗口.
        /// </summary>
        /// <param name="clientRuleObject"></param>
        /// <param name="editType"></param>
        /// <param name="mainViewGrid"></param>
        public XtraAbstractEditBaseForm(IClientRule clientRuleObject, ObjectEditType editType, MB.WinBase.Binding.BindingSourceEx bindingSource)
        {
            InitializeComponent();

            if (!MB.Util.General.IsInDesignMode() && editType != ObjectEditType.DesignDemo)
            {
                _DataValidated = new MB.WinBase.UIDataInputValidated(this);

                _BindingSource = bindingSource;

                _ClientRuleObject = clientRuleObject;

                _BusinessOperateTrace = new BusinessOperateTrace(_ClientRuleObject);
                _BusinessOperateTrace.CommandItemClick += new EventHandler <MB.WinClientDefault.Common.EditDocStateTraceEventArgs>(_BusinessOperateTrace_CommandItemClick);

                _ExtendToolStripButtonMenu = _BusinessOperateTrace.CommandMenus;

                _CurrentEditType = editType;

                // _MainViewGridControl = mainViewGrid;

                this.Load += new EventHandler(AbstractEditBaseForm_Load);

                _BeforeSaveDetailEntityCache              = new MB.WinBase.UIEditEntityList();
                _BeforeSaveDetailEntityCache.ListChanged += new ListChangedEventHandler(_DetailEditEntitys_ListChanged);

                // bindingNavMain.ItemClicked += new ToolStripItemClickedEventHandler(bindingNavMain_ItemClicked);

                _BindingSource.ListChanged     += new ListChangedEventHandler(_BindingSource_ListChanged);
                _BindingSource.PositionChanged += new EventHandler(_BindingSource_PositionChanged);
                _BindingSource.AddingNew       += new AddingNewEventHandler(_BindingSource_AddingNew);
                //  bntPositionItem.KeyDown += new KeyEventHandler(bntPositionItem_KeyDown);

                //_HasLoadDetailData = new Dictionary<KeyValuePair<object, int>, object>();
                // _ExtendUICommands = new Dictionary<ToolStripButton, CommandID>();

                _HasAddMainEntityEvent = new List <INotifyPropertyChanged>();
            }
            _GeneralCommands = new Dictionary <string, DevExpress.XtraBars.BarButtonItem>();
            _GeneralCommands.Add(MB.BaseFrame.SOD.MODULE_COMMAND_ADD, bntAddNewItem);
            _GeneralCommands.Add(MB.BaseFrame.SOD.MODULE_COMMAND_DELETE, bntDeleteItem);
            _GeneralCommands.Add(MB.BaseFrame.SOD.MODULE_COMMAND_SAVE, bntSaveItem);
            _GeneralCommands.Add(MB.BaseFrame.SOD.MODULE_COMMAND_SUBMIT, bntSubmitItem);
            _GeneralCommands.Add(MB.BaseFrame.SOD.MODULE_COMMAND_CANCEL_SUBMIT, bntCancelSubmitItem);
        }
コード例 #5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="clientRuleObject"></param>
        /// <param name="editType"></param>
        /// <param name="mainViewGrid"></param>
        public AbstractEditBaseForm(IClientRule clientRuleObject, ObjectEditType editType, MB.WinBase.Binding.BindingSourceEx bindingSource)
        {
            InitializeComponent();

            if (!MB.Util.General.IsInDesignMode() && editType != ObjectEditType.DesignDemo)
            {
                _DataValidated = new MB.WinBase.UIDataInputValidated(this);

                _BindingSource = bindingSource;

                _ClientRuleObject = clientRuleObject;
                //根据业务类上的配置项来进行约束操作菜单项。
                var rejectCfg = MB.WinBase.Atts.AttributeConfigHelper.Instance.GetModuleRejectCommands(_ClientRuleObject.GetType());
                if (rejectCfg != null)
                {
                    _RejectCommands = rejectCfg.RejectCommands;
                }
                //_RejectCommands
                _CurrentEditType = editType;

                // _MainViewGridControl = mainViewGrid;

                this.Load += new EventHandler(AbstractEditBaseForm_Load);

                _BeforeSaveDetailEntityCache              = new MB.WinBase.UIEditEntityList();
                _BeforeSaveDetailEntityCache.ListChanged += new ListChangedEventHandler(_DetailEditEntitys_ListChanged);

                bindingNavMain.ItemClicked += new ToolStripItemClickedEventHandler(bindingNavMain_ItemClicked);

                _BindingSource.ListChanged     += new ListChangedEventHandler(_BindingSource_ListChanged);
                _BindingSource.PositionChanged += new EventHandler(_BindingSource_PositionChanged);
                _BindingSource.AddingNew       += new AddingNewEventHandler(_BindingSource_AddingNew);
                //  bntPositionItem.KeyDown += new KeyEventHandler(bntPositionItem_KeyDown);

                //_HasLoadDetailData = new Dictionary<KeyValuePair<object, int>, object>();
                // _ExtendUICommands = new Dictionary<ToolStripButton, CommandID>();

                _HasAddMainEntityEvent = new List <INotifyPropertyChanged>();
            }
        }
コード例 #6
0
        /// <summary>
        /// 构造函数
        /// </summary>
        /// <param name="parentSortingNode"></param>
        /// <param name="treeListHoster"></param>
        public TreeViewNodesSortingForm(DevExpress.XtraTreeList.Nodes.TreeListNode parentSortingNode,
                                        ITreeListViewHoster treeListHoster)
        {
            InitializeComponent();

            _SortingNode      = parentSortingNode;
            _TreeListHoster   = treeListHoster;
            _ClientRuleObject = treeListHoster as IClientRule;

            trvLstMain.OptionsBehavior.DragNodes = true;
            trvLstMain.OptionsView.ShowIndicator = false;
            _ImageList = MB.WinClientDefault.Images.ImageListHelper.Instance.GetDefaultTreeNodeImage();
            trvLstMain.StateImageList = _ImageList;
            trvLstMain.Dock           = DockStyle.Fill;
            _IsMainTreeNeedRefreshed  = false;

            if (_TreeListHoster == null || _TreeListHoster.TreeViewCfg == null ||
                string.IsNullOrEmpty(_TreeListHoster.TreeViewCfg.OrderFieldName))
            {
                throw new MB.Util.APPException("没有配置排序字段,不能打开排序窗口");
            }
        }
コード例 #7
0
 /// <summary>
 /// 构造函数
 /// </summary>
 /// <param name="clientRule">客户端Rule</param>
 /// <param name="dataSource">客户端数据源</param>
 /// <param name="xmlFile">客户端UI Xml</param>
 /// <param name="docType">当前编辑的对象类型的值</param>
 /// <param name="mainKeys">主键的名字</param>
 /// <param name="mainKeyValues">主键的值</param>
 public WinformExcelEditor(IClientRule clientRule,
                           List <T> dataSource, string xmlFile, int docType, string[] mainKeys)
 {
     _ClientRule          = clientRule;
     _XmlFile             = xmlFile;
     _DocType             = docType;
     _MainKeys            = mainKeys;
     _DAccs               = createDynamicProperyAccess(typeof(T));
     _Columns             = LayoutXmlConfigHelper.Instance.GetColumnPropertys(_XmlFile);
     _EditColumns         = LayoutXmlConfigHelper.Instance.GetColumnEdits(_Columns, _XmlFile);
     _OrignalDataSource   = saveOrignialDataSourceToHashTable(dataSource);
     _ConvertedDataSource = convertListToDataSet(dataSource);
     if (_EditColumns != null && _EditColumns.Count > 0)
     {
         _LookUpDataValueKey = convertToHasTable(_EditColumns, false);
         _LookUpDataTextKey  = convertToHasTable(_EditColumns, true);
     }
     _NonEditableColumns    = new List <string>(); //在formatDataSourceToExcel被赋值
     _Values                = new Dictionary <string, T>();
     _SubmittedValue        = new Dictionary <string, T>();
     _SubmittedNewValue     = new List <T>();
     _HashedValues          = new Dictionary <string, string>();
     _SubmittedHashedValues = new Dictionary <string, string>();
 }
コード例 #8
0
        void dataAssistant_AfterGetObjectData(object sender, GetObjectDataAssistantEventArgs arg)
        {
            if (arg.SelectedRows == null || arg.SelectedRows.Length == 0)
            {
                return;
            }
            if (arg.SelectedRows.Length > SHOW_MSG_COUNT)
            {
                var re = MB.WinBase.MessageBoxEx.Question(string.Format("当前需要批量增加的数据量有{0}行,请分批导入,继续将花费几十秒的时间.是否继续?", arg.SelectedRows.Length));
                if (re != System.Windows.Forms.DialogResult.Yes)
                {
                    return;
                }
            }
            try {
                //edit by chendc 2010-07-08 性能优化调整
                Dictionary <string, MB.Util.Emit.DynamicPropertyAccessor> orgAcs = new Dictionary <string, Util.Emit.DynamicPropertyAccessor>();
                Dictionary <string, MB.Util.Emit.DynamicPropertyAccessor> desAcs = new Dictionary <string, Util.Emit.DynamicPropertyAccessor>();

                object orgEntity = arg.SelectedRows[0];

                foreach (MB.WinBase.Common.EditCtlDataMappingInfo info in _ColumnEditCfgInfo.EditCtlDataMappings)
                {
                    if (!MB.Util.MyReflection.Instance.CheckObjectExistsProperty(orgEntity, info.SourceColumnName))
                    {
                        MB.Util.TraceEx.Write(string.Format("源数据中不包含属性{0}", info.SourceColumnName));
                        continue;
                    }
                    orgAcs.Add(info.ColumnName, new Util.Emit.DynamicPropertyAccessor(orgEntity.GetType(), info.SourceColumnName));
                    desAcs.Add(info.ColumnName, new Util.Emit.DynamicPropertyAccessor(typeof(T), info.ColumnName));
                }

                List <T>    listFromDataAssistance = new List <T>(); //从数据小助手获取的数据列表。
                IClientRule uiRule  = _EditForm.ClientRuleObject as IClientRule;
                IList       newList = null;
                if (_IsEntityBatchCreatedFromServer)
                {
                    newList = uiRule.CreateNewEntityBatch(_dataInDocType, arg.SelectedRows.Length); //从服务端批量新增对象, 为了获取服务端赋予对象的默认值
                }
                int newListIndex = 0;
                foreach (object row in arg.SelectedRows)
                {
                    //这个AddNew 主要是产生一个AddNew的事件, 通过这个事件从服务器端返回一个新的对象并把
                    //该集合中创建的对象替换掉,在真正使用中 如果存在性能的问题,可以修改为从本地创建。
                    //T newEntity = _DetailEntitys.AddNew();
                    T newEntity = null;
                    if (_IsEntityBatchCreatedFromServer)
                    {
                        newEntity = (T)newList[newListIndex];
                        listFromDataAssistance.Add(newEntity);
                    }
                    else
                    {
                        newEntity = _DetailEntitys.AddNew();
                    }

                    foreach (var acKey in orgAcs.Keys)
                    {
                        object val = orgAcs[acKey].Get(row);
                        if (val == null)
                        {
                            continue;
                        }

                        desAcs[acKey].Set(newEntity, val);
                    }
                    //foreach (MB.WinBase.Common.EditCtlDataMappingInfo info in _ColumnEditCfgInfo.EditCtlDataMappings) {
                    //    object dataObject = row;

                    //    if (!MB.Util.MyReflection.Instance.CheckObjectExistsProperty(dataObject, info.SourceColumnName)) {
                    //        MB.Util.TraceEx.Write(string.Format("源数据中不包含属性{0}", info.SourceColumnName));
                    //        continue;
                    //    }
                    //    object val = MB.Util.MyReflection.Instance.InvokePropertyForGet(dataObject, info.SourceColumnName);
                    //    if (val == null) continue;

                    //    MB.Util.MyReflection.Instance.InvokePropertyForSet(newEntity, info.ColumnName, val.ToString());

                    //},
                    newListIndex++;
                }

                if (_IsEntityBatchCreatedFromServer)
                {
                    onAfterGetDataFromDataAssistance(new AfterGetDataFromDataAssistanceEventArgs <T>(listFromDataAssistance.ToArray()));
                }
            }
            catch (Exception ex) {
                throw new MB.Util.APPException("批量增加数据有误,请重试!", MB.Util.APPMessageType.DisplayToUser, ex);
            }
        }
コード例 #9
0
 /// <summary>
 /// 构造函数,使用默认主键:“ID”
 /// </summary>
 /// <param name="clientRule">客户端Rule</param>
 /// <param name="dataSource">客户端数据源</param>
 /// <param name="xmlFile">客户端UI Xml</param>
 /// <param name="docType">当前编辑的对象类型的值</param>
 public WinformExcelEditor(IClientRule clientRule, List <T> dataSource, string xmlFile,
                           int docType) :
     this(clientRule, dataSource, xmlFile, docType, new string[] { COL_DEFAULT_KEY })
 {
 }
コード例 #10
0
 /// <summary>
 /// 构造函数...
 /// </summary>
 /// <param name="clientRuleObject"></param>
 public AbstractListViewForm(IClientRule clientRuleObject)
 {
     InitializeComponent();
     _ClientRuleObject = clientRuleObject;
 }