/// <summary>
        /// 设置数据浏览
        /// </summary>
        /// <param name="clientRule"></param>
        /// <param name="dataSource"></param>
        public void SetDataSource(MB.WinBase.IFace.IClientRuleQueryBase clientRule, object dataSource)
        {
            //在数据小助手中实现动态列的设置,原来是取Default, clientRule.UIRuleXmlConfigInfo.GetDefaultColumns()
            Dictionary <string, ColumnPropertyInfo> bindingPropertys = MB.XWinLib.XtraGrid.XtraGridDynamicHelper.Instance.GetDynamicColumns(clientRule);

            MB.XWinLib.XtraGrid.XtraGridHelper.Instance.BindingToXtraGrid(grdCtlMain, dataSource,
                                                                          bindingPropertys, clientRule.UIRuleXmlConfigInfo.ColumnsCfgEdit,
                                                                          clientRule.ClientLayoutAttribute.UIXmlConfigFile, true);



            // gridViewMain.OptionsSelection.MultiSelect = _MultiSelect;
            if (_MultiSelect)
            {
                MB.XWinLib.XtraGrid.XtraGridEditHelper.Instance.AppendEditSelectedColumn(grdCtlMain);
            }

            //绑定右键菜单项 add by aifang 2012-08-22 begin
            if (!_ColumnEditCfgInfo.HideContextMenu)
            {
                Menu.MyContextMenuStrip strip = null;
                if (_ColumnEditCfgInfo.DataAssistantContextMenu == null || string.IsNullOrEmpty(_ColumnEditCfgInfo.DataAssistantContextMenu.Type))
                {
                    strip = new Menu.MyContextMenuStrip();
                    strip.ColumnEditCfgInfo          = _ColumnEditCfgInfo;
                    strip.ParentControl              = this.grdCtlMain;
                    this.grdCtlMain.ContextMenuStrip = strip;
                }
                else
                {
                    string   type     = _ColumnEditCfgInfo.DataAssistantContextMenu.Type;
                    string[] typePars = type.Split(',');

                    string   param   = _ColumnEditCfgInfo.DataAssistantContextMenu.TypeConstructParams;
                    string[] conPars = string.IsNullOrEmpty(param) ? null : param.Split(',');

                    object obj = MB.Util.DllFactory.Instance.LoadObject(typePars[0], conPars, typePars[1]);
                    if ((obj as Menu.MyContextMenuStrip) == null)
                    {
                        throw new MB.Util.APPException(" ClickButtonInput 弹出的自定义菜单必须继承自 MB.WinClientDefault.Menu.MyContextMenuStrip 控件", Util.APPMessageType.DisplayToUser);
                    }

                    strip = obj as Menu.MyContextMenuStrip;
                    strip.ColumnEditCfgInfo = _ColumnEditCfgInfo;
                    strip.ParentControl     = this.grdCtlMain;
                    //为自定义的ContextMenuStrip添加复制单元格的命令
                    ToolStripMenuItem itemCopyCell = new ToolStripMenuItem();
                    itemCopyCell.Name = "tsmiCopyCell";
                    itemCopyCell.Text = "复制单元格";
                    strip.Items.Add(itemCopyCell);

                    this.grdCtlMain.ContextMenuStrip = strip;
                }
            }
            //绑定右键菜单项 add by aifang 2012-08-22 end
        }
        /// <summary>
        /// 构造函数...
        /// </summary>
        public FrmGetObjectDataAssistant(MB.WinBase.IFace.IClientRule clientRule)
        {
            InitializeComponent();

            _ToolTip     = new ToolTip();
            panMain.Dock = DockStyle.Fill;

            _ClientRule = clientRule;

            lnkChecked.Visible = false;

            this.Load += new EventHandler(FrmGetObjectDataAssistant_Load);
        }
Exemple #3
0
        private bool  createFilterObject()
        {
            System.Windows.Forms.Control parentHoster = MB.WinBase.ShareLib.Instance.GetInvokeDataHosterControl(this.Parent);
            if (parentHoster != null)
            {
                // System.Windows.Forms.Form parentForm = MB.WinBase.ShareLib.Instance.GetControlParentForm(this.Parent);
                _FrmDataAssistant = MB.WinBase.ObjectDataFilterAssistantHelper.Instance.CreateDataAssistantObject(this, _ColumnEditCfgInfo, parentHoster, ref _ClientQueryRule);
            }
            else
            {
                Control ctl = this.Parent;
                DevExpress.XtraGrid.GridControl grdCtl = ctl as DevExpress.XtraGrid.GridControl;
                object mainEntity = null;
                if (grdCtl != null)
                {
                    DevExpress.XtraGrid.Views.Grid.GridView gridView = grdCtl.DefaultView as DevExpress.XtraGrid.Views.Grid.GridView;

                    mainEntity = gridView.GetRow(gridView.FocusedRowHandle);
                    if (mainEntity == null)
                    {
                        IBindingList bindingList = grdCtl.DataSource as IBindingList;
                        mainEntity       = bindingList.AddNew();
                        _AddedMainEntity = mainEntity;
                    }

                    //if (gridView.FocusedRowHandle < 0)
                    //{
                    //    //通过这种变态的方法自动增加一个空行,同时保证不重复增加
                    //    this.Text = "0";
                    //    this.Text = string.Empty;
                    //}
                    //mainEntity = gridView.GetFocusedRow();
                }

                parentHoster = MB.WinBase.ShareLib.Instance.GetControlParentForm(this.Parent);
                IForm frm = parentHoster as IForm;
                if (frm != null)
                {
                    _ClientQueryRule = frm.ClientRuleObject;

                    _FrmDataAssistant = MB.WinBase.ObjectDataFilterAssistantHelper.Instance.CreateDataAssistantObject(this, mainEntity, _ColumnEditCfgInfo, _ClientQueryRule);
                }
            }
            if (_FrmDataAssistant != null)
            {
                _FrmDataAssistant.MultiSelect         = false;
                _FrmDataAssistant.MaxSelectRows       = _ColumnEditCfgInfo.MaxSelectRows;
                _FrmDataAssistant.AfterGetObjectData += new MB.WinBase.IFace.GetObjectDataAssistantEventHandle(assistant_AfterGetObjectData);
            }
            return(_FrmDataAssistant != null);
        }
Exemple #4
0
        /// <summary>
        /// 构造函数...
        /// </summary>
        public ucFilterCondition(MB.WinBase.IFace.IViewGridForm viewGridForm, MB.WinBase.IFace.IClientRuleQueryBase clientRule, string filterCfgName)
        {
            InitializeComponent();

            _ViewGridForm = viewGridForm;
            _ClientRule   = clientRule;
            if (!string.IsNullOrEmpty(filterCfgName))
            {
                _FilterCfgName = filterCfgName;
            }
            else
            {
                _FilterCfgName = DATA_FILTER_MAIN_CFG_NAME;
            }
            this.Load += new EventHandler(ucFilterCondition_Load);

            _ErrorProvider = new ErrorProvider();
            _ErrorProvider.ContainerControl = this;
        }
        /// <summary>
        /// 根据指定的模块命令参数 创建Win Form 窗口。
        /// </summary>
        /// <param name="clientRule">指定的客户端业务类,可以为空。</param>
        /// <param name="commandInfo">模块命令参数</param>
        /// <returns></returns>
        public MB.WinBase.IFace.IForm CreateWinForm(MB.WinBase.IFace.IClientRuleQueryBase clientRule, MB.Util.Model.ModuleCommandInfo commandInfo)
        {
            try {
                string[] clientRuleSetting = null;
                if (!string.IsNullOrEmpty(commandInfo.ClientRule))
                {
                    clientRuleSetting = commandInfo.ClientRule.Split(',');
                }
                string[] formSetting    = commandInfo.UIView.Split(',');
                object[] ruleCreatePars = null;
                object[] formCreatePars = null;
                if (!string.IsNullOrEmpty(commandInfo.RuleCreateParams))
                {
                    ruleCreatePars = commandInfo.RuleCreateParams.Split(',');
                }
                if (!string.IsNullOrEmpty(commandInfo.UICreateParams))
                {
                    formCreatePars = commandInfo.UICreateParams.Split(',');
                }

                MB.WinBase.IFace.IClientRuleQueryBase rule = clientRule;
                if (!string.IsNullOrEmpty(commandInfo.ClientRule))
                {
                    if (clientRule == null || string.Compare(clientRuleSetting[0], clientRule.GetType().FullName, true) != 0)
                    {
                        var temp = MB.Util.DllFactory.Instance.LoadObject(clientRuleSetting[0], ruleCreatePars, clientRuleSetting[1]);
                        rule = temp as MB.WinBase.IFace.IClientRuleQueryBase;
                    }
                    MB.Util.TraceEx.WriteIf(rule != null, string.Format("请检查数据库中该功能模块对应的客户端类{0} 是否设置出错!", commandInfo.ClientRule), MB.Util.APPMessageType.SysErrInfo);
                }
                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);
                winForm.ClientRuleObject = rule;
                return(winForm);
            }
            catch (MB.Util.APPException aex) {
                throw aex;
            }
            catch (Exception ex) {
                throw MB.Util.APPExceptionHandlerHelper.PromoteException(ex, MB.Util.APPMessageType.SysErrInfo);
            }
        }
Exemple #6
0
        /// <summary>
        /// 创建数据获取帮助窗口。
        /// </summary>
        /// <param name="cfgInfo"></param>
        /// <param name="parentForm"></param>
        /// <param name="clientQueryRule"></param>
        /// <returns></returns>
        public MB.WinBase.IFace.IDataAssistant CreateDataAssistantObject(object srcControl, ColumnEditCfgInfo cfgInfo,
                                                                         System.Windows.Forms.Control parentHoster,
                                                                         ref MB.WinBase.IFace.IClientRuleQueryBase clientQueryRule)
        {
            MB.WinBase.Common.ColumnEditCfgInfo columnEditCfgInfo = cfgInfo;
            if (columnEditCfgInfo == null)
            {
                throw new MB.Util.APPException("需要进行查询的对象ColumnEditCfg 没有进行进行相应的配置。", MB.Util.APPMessageType.DisplayToUser);
            }
            if (cfgInfo.CreateDataAssistant != null)
            {
                return(cfgInfo.CreateDataAssistant(srcControl));
            }   //判断是否存在自定义弹出窗口的配置,如果存在就进行处理
            else if (columnEditCfgInfo.ClickButtonShowForm != null && !string.IsNullOrEmpty(columnEditCfgInfo.ClickButtonShowForm.Type))
            {
                //edit by aifang 2012-4-19
                MB.WinBase.IFace.IInvokeDataAssistantHoster hoster = parentHoster as MB.WinBase.IFace.IInvokeDataAssistantHoster;
                if (hoster != null)
                {
                    MB.WinBase.IFace.InvokeDataAssistantHosterEventArgs arg = new MB.WinBase.IFace.InvokeDataAssistantHosterEventArgs(columnEditCfgInfo);
                    arg.ClientRule = clientQueryRule;
                    hoster.BeforeShowDataAssistant(srcControl, arg);
                    if (arg.Cancel)
                    {
                        return(null);
                    }

                    clientQueryRule   = arg.ClientRule;
                    columnEditCfgInfo = arg.ClumnEditCfgInfo;
                }
                //end

                string[] pars = null;
                if (!string.IsNullOrEmpty(columnEditCfgInfo.ClickButtonShowForm.TypeConstructParams))
                {
                    pars = columnEditCfgInfo.ClickButtonShowForm.TypeConstructParams.Split(',');
                }
                string[] frmSetting = columnEditCfgInfo.ClickButtonShowForm.Type.Split(',');
                object   frm        = MB.Util.DllFactory.Instance.LoadObject(frmSetting[0], pars, frmSetting[1]);
                if ((frm as Form) == null)
                {
                    throw new MB.Util.APPException(" ColumnEditCfgInfo 的 ClickButtonShowForm 配置不是有效的一个窗口类", MB.Util.APPMessageType.SysErrInfo);
                }
                if ((frm as MB.WinBase.IFace.IDataAssistant) == null)
                {
                    throw new MB.Util.APPException(" ClickButtonInput 弹出的自定义窗口必须实现 MB.WinBase.IFace.IDataAssistant 接口", MB.Util.APPMessageType.SysErrInfo);
                }

                return(frm as MB.WinBase.IFace.IDataAssistant);
            }
            else
            {
                if (columnEditCfgInfo.InvokeDataSourceDesc == null)
                {
                    throw new MB.Util.APPException(" ColumnEditCfg 配置项的InvokeDataSourceDesc 没有进行进行相应的配置。", MB.Util.APPMessageType.SysErrInfo);
                }
                string[] descs   = columnEditCfgInfo.InvokeDataSourceDesc.Type.Split(',');
                string[] conPars = null;
                if (!string.IsNullOrEmpty(cfgInfo.InvokeDataSourceDesc.TypeConstructParams))
                {
                    conPars = cfgInfo.InvokeDataSourceDesc.TypeConstructParams.Split(',');
                }

                if (clientQueryRule == null)
                {
                    clientQueryRule = MB.Util.DllFactory.Instance.LoadObject(descs[0], conPars, descs[1]) as MB.WinBase.IFace.IClientRuleQueryBase;
                }

                MB.Util.TraceEx.Assert(clientQueryRule != null, "调用UI层业务控制类配置有误!");

                //edit by chendc 2010-09-03
                MB.WinBase.IFace.IInvokeDataAssistantHoster hoster = parentHoster as MB.WinBase.IFace.IInvokeDataAssistantHoster;
                if (hoster != null)
                {
                    MB.WinBase.IFace.InvokeDataAssistantHosterEventArgs arg = new MB.WinBase.IFace.InvokeDataAssistantHosterEventArgs(columnEditCfgInfo);
                    arg.ClientRule = clientQueryRule;
                    hoster.BeforeShowDataAssistant(srcControl, arg);
                    if (arg.Cancel)
                    {
                        return(null);
                    }

                    clientQueryRule = arg.ClientRule;
                }

                string   defaultQueryFilterForm = "MB.WinClientDefault.QueryFilter.FrmGetObjectDataAssistant,MB.WinClientDefault.Dll";
                string[] formSetting            = defaultQueryFilterForm.Split(',');
                MB.WinBase.IFace.IGetObjectDataAssistant dataAssistant = MB.Util.DllFactory.Instance.LoadObject(formSetting[0], formSetting[1]) as MB.WinBase.IFace.IGetObjectDataAssistant;
                MB.Util.TraceEx.Assert(dataAssistant != null, "帮助查找窗口必须实现接口MB.WinBase.IFace.IGetObjectDataAssistant!");

                resetDataAssistant(clientQueryRule, columnEditCfgInfo, null, hoster, dataAssistant);

                return(dataAssistant);
            }
        }
Exemple #7
0
 /// <summary>
 /// 创建数据获取帮助窗口。
 /// </summary>
 /// <param name="cfgInfo"></param>
 /// <param name="parentForm"></param>
 /// <returns></returns>
 public MB.WinBase.IFace.IDataAssistant CreateDataAssistantObject(object srcControl, ColumnEditCfgInfo cfgInfo,
                                                                  System.Windows.Forms.Control parentHoster)
 {
     MB.WinBase.IFace.IClientRuleQueryBase clientQueryRule = null;
     return(CreateDataAssistantObject(srcControl, cfgInfo, parentHoster, ref clientQueryRule));
 }
Exemple #8
0
 public ucFilterCondition(MB.WinBase.IFace.IClientRuleQueryBase clientRule, string filterCfgName) : this(null, clientRule, filterCfgName)
 {
 }
        void FrmGetObjectDataAssistant_Load(object sender, EventArgs e)
        {
            if (MB.Util.General.IsInDesignMode())
            {
                return;
            }

            if (_ClientRule == null)
            {
                string[] tps = this.InvokeDataSourceDesc.Type.Split(',');
                if (string.IsNullOrEmpty(this.InvokeDataSourceDesc.TypeConstructParams))
                {
                    _ClientRule = MB.Util.DllFactory.Instance.LoadObject(tps[0], tps[1]) as MB.WinBase.IFace.IClientRuleQueryBase;
                }
                else
                {
                    var conPars = this.InvokeDataSourceDesc.TypeConstructParams.Split(',');
                    _ClientRule = MB.Util.DllFactory.Instance.LoadObject(tps[0], conPars, tps[1]) as MB.WinBase.IFace.IClientRuleQueryBase;
                }
            }
            if (_ClientRule == null)
            {
                throw new MB.Util.APPException("没有得到客户端业务控制类!", MB.Util.APPMessageType.SysErrInfo);
            }

            //增加分页  add by aifang 2012-07-26 begin
            MB.WinBase.AppMessenger.DefaultMessenger.Subscribe <string>(QUERY_REFRESH_MSG_ID, o =>
            {
                labTitleMsg.Text = o;
            });
            if (_QueryObject == null && pnlQry.Visible)
            {
                lnkNextPage.Click     += new EventHandler(lnkNextPage_Click);
                lnkPreviousPage.Click += new EventHandler(lnkPreviousPage_Click);

                lnkPreviousPage.Enabled = false;
                lnkNextPage.Enabled     = false;
            }
            //增加分页  add by aifang 2012-07-26 end

            if (_StepShowControlPane == null)
            {
                _StepShowControlPane = new Dictionary <PaneViewType, Control>();
                _StepShowControlPane.Add(PaneViewType.FilterPane, CreateFilterControl(_ClientRule, ClumnEditCfgInfo.FilterCfgName));

                ITreeListViewHoster treeViewRule = _ClientRule as ITreeListViewHoster;
                if (treeViewRule == null)
                {
                    _ListView = new ucDataCheckListView();
                }
                else
                {
                    _ListView = new ucDataTreeListView();
                }

                _ListView.AfterSelectData += new GetObjectDataAssistantEventHandle(listView_AfterSelectData);
                _StepShowControlPane.Add(PaneViewType.DataSelect, _ListView as Control);

                foreach (Control ctl in _StepShowControlPane.Values)
                {
                    ctl.Dock = DockStyle.Fill;
                    panMain.Controls.Add(ctl);
                }
            }

            if (_HideFilterPane)
            {
                _StepShowControlPane[PaneViewType.DataSelect].BringToFront();
                _ListView.MultiSelect       = _MultiSelect;
                _ListView.ColumnEditCfgInfo = _ClumnEditCfgInfo;
                lnkChecked.Visible          = _MultiSelect;

                try
                {
                    //获得动态列的MessageKey
                    string messageHeaderKey = string.Empty;
                    if (_ClientRule.ClientLayoutAttribute.LoadType == ClientDataLoadType.ReLoad)
                    {
                        messageHeaderKey = _ClientRule.ClientLayoutAttribute.MessageHeaderKey;
                    }

                    //添加动态列消息头
                    MB.XWinLib.XtraGrid.XtraGridDynamicHelper.Instance.AppendQueryBehaviorColumns(_ClientRule);
                    //增加分页信息
                    if (_MAX_SHOW_ROWS <= 0)
                    {
                        _MAX_SHOW_ROWS = MB.Util.MyConvert.Instance.ToInt(nubMaxShotCount.Value);
                    }
                    _ClientRule.CurrentQueryBehavior.PageSize  = _MAX_SHOW_ROWS;
                    _ClientRule.CurrentQueryBehavior.PageIndex = 0;

                    using (QueryBehaviorScope scope = new QueryBehaviorScope(_ClientRule.CurrentQueryBehavior, messageHeaderKey))
                    {
                        List <MB.Util.Model.QueryParameterInfo> filterParas;
                        if (_FilterParametersIfNoFiterPanel != null)
                        {
                            filterParas = _FilterParametersIfNoFiterPanel;
                        }
                        else
                        {
                            filterParas = new List <MB.Util.Model.QueryParameterInfo>();
                        }

                        var lstDatas = this.GetFilterObjects(0, filterParas);
                        _ListView.SetDataSource(_ClientRule, lstDatas);

                        validateButton(PaneViewType.DataSelect);
                        butNext.Enabled      = false;
                        butPreviouss.Enabled = false;
                        validatedPageControl((lstDatas as IList).Count);
                    }
                }
                catch (Exception ex)
                {
                    MB.WinBase.ApplicationExceptionTerminate.DefaultInstance.ExceptionTerminate(ex);
                }
            }
            else
            {
                _StepShowControlPane[PaneViewType.FilterPane].BringToFront();
                validateButton(PaneViewType.FilterPane);
            }
            ucFilterCondition filterCtl = _StepShowControlPane[PaneViewType.FilterPane] as ucFilterCondition;

            if (filterCtl != null)
            {
                //panBottom.BackColor = filterCtl.AllowEmptyFilter ? System.Drawing.Color.FromArgb(212, 228, 248) : Color.White;
                if (filterCtl.AllowEmptyFilter)
                {
                    _ToolTip.SetToolTip(panBottom, "查询绿色通道,允许查询所有数据");
                }
            }
        }