示例#1
0
        /// <summary>
        /// 创建可编辑的卡片网格编辑控件。
        /// </summary>
        /// <param name="xtraGrid"></param>
        /// <param name="dataSource"></param>
        /// <param name="buiObj"></param>
        /// <param name="editCols"></param>
        /// <returns></returns>
        public bool CreateCardEdit(MB.XWinLib.XtraGrid.GridControlEx xtraGrid,
                                   object dataSource, MB.WinBase.IFace.IClientRule buiObj, Dictionary <string, MB.WinBase.Common.ColumnEditCfgInfo> editCols)
        {
            string viewTypeName = xtraGrid.MainView.GetType().Name;

            if (viewTypeName != "CardView")
            {
                xtraGrid.MainView = new DevExpress.XtraGrid.Views.Card.CardView();
            }
            editCardGrid(xtraGrid, dataSource, buiObj, editCols);
            return(true);
        }
示例#2
0
        /// <summary>
        ///加载需要导入的数据。/
        /// </summary>
        /// <param name="parent"></param>
        /// <param name="buiObj"></param>
        /// <param name="xmlFileName"></param>
        /// <param name="importFile"></param>
        /// <returns></returns>
        public DataSet  LoadImportData(IWin32Window parent, MB.WinBase.IFace.IClientRule buiObj, string xmlFileName, string importFile)
        {
            try {
                MB.WinBase.IFace.IForm iForm = parent as MB.WinBase.IFace.IForm;
                if (iForm != null)
                {
                    _ClientRuleObject = iForm.ClientRuleObject;
                }

                var     colPropertys = MB.WinBase.LayoutXmlConfigHelper.Instance.GetColumnPropertys(xmlFileName);
                var     editCols     = MB.WinBase.LayoutXmlConfigHelper.Instance.GetColumnEdits(colPropertys, xmlFileName);
                DataSet dsData       = createNULLDataByFieldPropertys(colPropertys);

                if (importFile.EndsWith(".txt"))
                {
                    MB.WinEIDrive.Import.TxtImport txtImport = new MB.WinEIDrive.Import.TxtImport(dsData, importFile);
                    ImportEngine helper = new ImportEngine(editCols, grdCtlMain, txtImport);
                    helper.Commit();
                }
                else
                {
                    if (ExistsRegedit() > 0)
                    {
                        MB.WinEIDrive.Import.OfficeXlsImport xlsImport = new WinEIDrive.Import.OfficeXlsImport(dsData, importFile);
                        ImportEngine helper = new ImportEngine(editCols, grdCtlMain, xlsImport);
                        helper.Commit();
                    }
                    else
                    {
                        MB.WinEIDrive.Import.XlsImport xlsImport = new MB.WinEIDrive.Import.XlsImport(dsData, importFile);
                        ImportEngine helper = new ImportEngine(editCols, grdCtlMain, xlsImport);
                        helper.Commit();
                    }
                }
                //移除空行数据
                MB.Util.DataValidated.Instance.RemoveNULLRowData(dsData);

                _ColPropertys      = colPropertys;
                _EditCols          = editCols;
                _CurrentImportData = dsData;
                _XmlFileName       = xmlFileName;
                return(_CurrentImportData);
            }
            catch (MB.Util.APPException aEx) {
                throw aEx;
            }
            catch (Exception ex) {
                throw new MB.Util.APPException("数据导入处理有误。", MB.Util.APPMessageType.SysFileInfo, ex);
            }
        }
        /// <summary>
        /// 显示数据导入对话框。
        /// </summary>
        /// <param name="parent"></param>
        /// <param name="clientRule"></param>
        /// <param name="bindingSource"></param>
        public void ShowDataImportDialog(MB.WinBase.IFace.IViewGridForm viewGridForm,
                                         MB.WinBase.Binding.BindingSourceEx bindingSource)
        {
            _ViewGridForm  = viewGridForm;
            _ClientRule    = viewGridForm.ClientRuleObject as MB.WinBase.IFace.IClientRule;
            _BindingSource = bindingSource;

            IDocDataImportProvider importProvider = _ClientRule as IDocDataImportProvider;

            if (importProvider == null)
            {
                MB.Util.TraceEx.Write(string.Format("业务类 {0} 还没有实现相应的数据导入接口 {1}",
                                                    _ClientRule.GetType().FullName, "IDocDataImportProvider"), MB.Util.APPMessageType.SysErrInfo);
                throw new MB.Util.APPException("当前模块尚未提供数据导入的功能", APPMessageType.DisplayToUser);
            }
            var importInfo = DefaultDataImportDialog.ShowDataImport(_ViewGridForm as Form, _ClientRule, _ClientRule.ClientLayoutAttribute.UIXmlConfigFile, true);

            if (importInfo == null)
            {
                return;
            }

            IList hasImportEntity;
            bool  b = importProvider.DataImport(_ViewGridForm, importInfo, out hasImportEntity);

            if (!b)
            {
                return;
            }

            DialogResult re = MB.WinBase.MessageBoxEx.Question("数据导入成功,是否需要从数据库中重新刷新数据?");

            if (re == DialogResult.Yes)
            {
                _ViewGridForm.Refresh();
            }
            else
            {
                if (hasImportEntity == null && hasImportEntity.Count == 0)
                {
                    return;
                }

                foreach (object entity in hasImportEntity)
                {
                    _BindingSource.Add(entity);
                }
            }
        }
示例#4
0
        //卡片编辑
        private bool editCardGrid(MB.XWinLib.XtraGrid.GridControlEx xtraGCtl,
                                  object dataSource, MB.WinBase.IFace.IClientRule buiObj, Dictionary <string, MB.WinBase.Common.ColumnEditCfgInfo> editCols)
        {
            MB.WinBase.Atts.RuleClientLayoutAttribute layoutAtt = MB.WinBase.Atts.AttributeConfigHelper.Instance.GetClientRuleSettingAtt(buiObj);
            Dictionary <string, MB.WinBase.Common.ColumnPropertyInfo> colPropertys = MB.WinBase.LayoutXmlConfigHelper.Instance.GetColumnPropertys(layoutAtt.UIXmlConfigFile);

            MB.XWinLib.XtraGrid.XtraGridViewHelper.Instance.SetEditGridAutoInfo(xtraGCtl);

            DevExpress.XtraGrid.Views.Card.CardView cardView = xtraGCtl.MainView as DevExpress.XtraGrid.Views.Card.CardView;

            if (colPropertys == null || colPropertys.Count == 0)
            {
                throw new MB.Util.APPException(string.Format("业务对象 {0} 没有配置对应的XML文件Columns 信息。", layoutAtt.UIXmlConfigFile));
            }
            //	设置控件的显示样式
            XtraGridViewHelper.Instance.SetCardView(xtraGCtl);

            if (cardView.Columns.Count > 0)
            {
                cardView.Columns.Clear();
            }
            //根据业务处理对象得到对应的 UI 编辑设置信息。
            int i = 0;

            foreach (MB.WinBase.Common.ColumnPropertyInfo fInfo in colPropertys.Values)
            {
                DevExpress.XtraGrid.Columns.GridColumn bdc = new DevExpress.XtraGrid.Columns.GridColumn();
                //判断该列是否可以进行编辑
                DevExpress.XtraEditors.Repository.RepositoryItem rEdit = null;
                if (editCols != null && editCols.ContainsKey(fInfo.Name))
                {
                    rEdit = CreateEditItemByEditInfo(editCols[fInfo.Name], fInfo.CanEdit, fInfo.DataType);//根据用户XML配置的信息获取一个编辑的列。
                }
                else
                {
                    rEdit = CreateEditItemByCol(fInfo, true);
                }

                bdc.ColumnEdit = rEdit;
                xtraGCtl.RepositoryItems.Add(rEdit);

                SetEditColumn(bdc, fInfo, null);

                cardView.Columns.Add(bdc);
                i++;
            }
            xtraGCtl.DataSource = dataSource;
            return(true);
        }
示例#5
0
        /// <summary>
        /// 根据创建的命令格式化操作菜单项。
        /// </summary>
        /// <param name="moduleInfo"></param>
        public void RefreshToolsButtonItem(MB.Util.Model.ModuleTreeNodeInfo moduleInfo)
        {
            foreach (DevExpress.XtraBars.BarButtonItem butItem in _AllCreateButtonItems.Keys)
            {
                butItem.Enabled = true;
            }
            if (!string.IsNullOrEmpty(moduleInfo.RejectCommands))
            {
                string[] rejects = moduleInfo.RejectCommands.Split(',');
                foreach (DevExpress.XtraBars.BarButtonItem butItem in _AllCreateButtonItems.Keys)
                {
                    XMenuInfo     menuInfo = _AllCreateButtonItems[butItem];
                    UICommandType cType    = (UICommandType)menuInfo.CommandID.ID;
                    if (Array.IndexOf(rejects, cType.ToString()) >= 0)
                    {
                        butItem.Enabled = false;
                    }
                }
            }

            MB.WinBase.IFace.IForm activeForm = _CommandExecutor.HostMdiMainForm.GetActiveMdiChildForm();
            if (activeForm == null)
            {
                return;
            }

            //如果是分析界面的话要屏蔽掉操作功能菜单项。
            MB.WinBase.IFace.IClientRule editRule = activeForm.ClientRuleObject as MB.WinBase.IFace.IClientRule;
            if (editRule != null)
            {
                return;
            }

            foreach (DevExpress.XtraBars.BarButtonItem butItem in _AllCreateButtonItems.Keys)
            {
                XMenuInfo menuInfo = _AllCreateButtonItems[butItem];
                var       info     = CommandGroups.EditCommands.FirstOrDefault(o => o.CommandID.Equals(menuInfo.CommandID));
                if (info != null)
                {
                    butItem.Enabled = false;
                    continue;
                }
                if (menuInfo.CommandID.Equals(UICommands.DataImport))
                {
                    butItem.Enabled = false;
                    continue;
                }
            }
        }
示例#6
0
        /// <summary>
        ///  显示数据导入处理窗口。
        /// </summary>
        /// <param name="parent"></param>
        /// <param name="buiObj"></param>
        /// <param name="xmlFileName"></param>
        /// <param name="importImmediate">判断是否为直接导入</param>
        /// <returns></returns>
        public static DataImportInfo ShowDataImport(IWin32Window parent, MB.WinBase.IFace.IClientRule buiObj, string xmlFileName, bool importImmediate, Func <DataSet, DataSet> businessCheckAfterLoadImportData)
        {
            string file = MB.WinBase.ShareLib.Instance.SelectedFile("Excel 文件 (*.xls)|*.xls|文本文件(*.txt)|*.txt");

            if (string.IsNullOrEmpty(file))
            {
                return(null);
            }
            if (!file.EndsWith(".xls") && !file.EndsWith(".txt"))
            {
                throw new MB.Util.APPException(string.Format("文件 {0} 对应的文件类型暂不支持!", file), MB.Util.APPMessageType.DisplayToUser);
            }

            try {
                DefaultDataImportDialog dialog = new DefaultDataImportDialog(importImmediate);
                DataSet dsData = dialog.LoadImportData(parent, buiObj, xmlFileName, file);

                //新增插入业务检查,检查的方法从外部嵌入
                if (businessCheckAfterLoadImportData != null)
                {
                    dsData = dialog.BusinessValidate(businessCheckAfterLoadImportData, dsData);
                }
                bool exists = dsData != null && dsData.Tables.Count > 0 && dsData.Tables[0].Rows.Count > 0;
                if (exists)
                {
                    DialogResult importSure = dialog.ShowDialog();
                    if (importSure == DialogResult.OK)
                    {
                        return(dialog.CurrentImportInfo);
                    }
                }
                else
                {
                    DialogResult re = MB.WinBase.MessageBoxEx.Question("没有匹配到任何需要导入的数据,是否需要重新选择");
                    if (re == DialogResult.Yes)
                    {
                        return(ShowDataImport(parent, buiObj, xmlFileName, importImmediate));
                    }
                }
                return(null);
            }
            catch (Exception ex) {
                throw new MB.Util.APPException(string.Format("加载需要导入的文件{0} 有误!", file), MB.Util.APPMessageType.DisplayToUser, ex);
            }
        }
示例#7
0
 public static DataImportInfo ShowDataImport(IWin32Window parent, MB.WinBase.IFace.IClientRule buiObj, string xmlFileName, bool importImmediate)
 {
     return(ShowDataImport(parent, buiObj, xmlFileName, importImmediate, null));
 }
        //根据当前活动的子窗口 格式化操作的菜单项
        private void refreshToolsButtonItem(MB.Util.Model.ModuleTreeNodeInfo moduleInfo)
        {
            _RejectCommandItems.Clear();
            foreach (DevExpress.XtraBars.BarButtonItem butItem in _AllCreateMenuItems.Keys)
            {
                butItem.Enabled = true;
            }
            if (!string.IsNullOrEmpty(moduleInfo.RejectCommands))
            {
                string[] rejects = moduleInfo.RejectCommands.Split(',');
                foreach (DevExpress.XtraBars.BarButtonItem butItem in _AllCreateMenuItems.Keys)
                {
                    System.ComponentModel.Design.CommandID cmdID = _AllCreateMenuItems[butItem];
                    UICommandType cType = (UICommandType)cmdID.ID;
                    if (Array.IndexOf(rejects, cType.ToString()) >= 0)
                    {
                        butItem.Enabled = false;
                        if (!_RejectCommandItems.ContainsKey(butItem))
                        {
                            _RejectCommandItems.Add(butItem, false);
                        }
                        else
                        {
                            _RejectCommandItems[butItem] = false;
                        }
                    }
                }
            }

            MB.WinBase.IFace.IForm activeForm = this.GetActiveMdiChildForm();
            if (activeForm == null)
            {
                return;
            }

            //如果是分析界面的话要屏蔽掉操作功能菜单项。
            MB.WinBase.IFace.IClientRule editRule = activeForm.ClientRuleObject as MB.WinBase.IFace.IClientRule;
            if (editRule != null)
            {
                return;
            }

            foreach (DevExpress.XtraBars.BarButtonItem butItem in _AllCreateMenuItems.Keys)
            {
                System.ComponentModel.Design.CommandID cmdID = _AllCreateMenuItems[butItem];
                var info = CommandGroups.EditCommands.FirstOrDefault(o => o.CommandID.Equals(cmdID));
                if (info != null)
                {
                    butItem.Enabled = false;
                    if (!_RejectCommandItems.ContainsKey(butItem))
                    {
                        _RejectCommandItems.Add(butItem, false);
                    }
                    else
                    {
                        _RejectCommandItems[butItem] = false;
                    }
                    continue;
                }
                if (cmdID.Equals(UICommands.DataImport))
                {
                    butItem.Enabled = false;
                    if (!_RejectCommandItems.ContainsKey(butItem))
                    {
                        _RejectCommandItems.Add(butItem, false);
                    }
                    else
                    {
                        _RejectCommandItems[butItem] = false;
                    }
                    continue;
                }
            }
        }
        /// <summary>
        /// 针对实体类的数据验证。
        /// </summary>
        /// <param name="clientRule"></param>
        /// <param name="editColumnCtls"></param>
        /// <param name="dataEntity"></param>
        /// <returns></returns>
        public bool DataValidated(MB.WinBase.IFace.IClientRule clientRule, List <MB.WinBase.Binding.ColumnBindingInfo> editColumnCtls, object dataEntity)
        {
            if (editColumnCtls == null || editColumnCtls.Count == 0)
            {
                return(true);
            }
            bool    re            = true;
            Control firstErrorCtl = null;

            foreach (MB.WinBase.Binding.ColumnBindingInfo colCfg in editColumnCtls)
            {
                _ErrorProvider.SetError(colCfg.BindingControl, string.Empty);

                if (dataEntity == null)
                {
                    continue;
                }
                bool exists = MB.Util.MyReflection.Instance.CheckObjectExistsProperty(dataEntity, colCfg.ColumnName);
                if (!exists)
                {
                    // _ErrorProvider.SetError(colCfg.BindingControl, string.Empty);
                    if (firstErrorCtl == null)
                    {
                        firstErrorCtl = colCfg.BindingControl;
                    }
                    continue;
                }

                object val    = MB.Util.MyReflection.Instance.InvokePropertyForGet(dataEntity, colCfg.ColumnName);
                string errMsg = string.Empty;
                bool   check  = validated(colCfg.ColumnPropertyInfo, val, ref errMsg);
                if (!check || errMsg.Length > 0)
                {
                    re = false;
                }

                if (!string.IsNullOrEmpty(errMsg))
                {
                    _ErrorProvider.SetError(colCfg.BindingControl, errMsg);
                    if (firstErrorCtl == null)
                    {
                        firstErrorCtl = colCfg.BindingControl;
                    }
                }
            }

            if (firstErrorCtl != null)
            {
                firstErrorCtl.Focus();
                MB.WinBase.ShareLib.Instance.ShowFocusControl(firstErrorCtl);
            }
            if (re)
            {
                //在数据检验通过后进行逻辑主键的判断
                string[] logicKeys = MB.WinBase.LayoutXmlConfigHelper.Instance.GetLogicKeys(clientRule.ClientLayoutAttribute.UIXmlConfigFile);
                if (logicKeys != null && logicKeys.Length > 0 && clientRule.MainDataTypeInDoc != null)
                {
                    clientRule.CheckValueIsExists((int)clientRule.MainDataTypeInDoc, dataEntity, logicKeys);
                }
            }
            return(re);
        }