/// <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(); } } }
/// <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); }
/// <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); }
/// <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); }
/// <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>(); } }
/// <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("没有配置排序字段,不能打开排序窗口"); } }
/// <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>(); }
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); } }
/// <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 }) { }
/// <summary> /// 构造函数... /// </summary> /// <param name="clientRuleObject"></param> public AbstractListViewForm(IClientRule clientRuleObject) { InitializeComponent(); _ClientRuleObject = clientRuleObject; }