Exemple #1
0
        /// <summary>
        /// 把汇总条件绑定到网格上,让用户能自由操作
        /// 每次动态聚组窗口加载是调用
        /// </summary>
        public void BindDynamicGroupColumnsToGrid()
        {
            //用到的全局变量
            DynamicGroupCfgInfo  dyConfigInfo     = _DynamicCfgInfo;
            GridControlEx        grid             = _GirdControl;
            IClientRuleQueryBase clientRuleObject = _ClientRuleObject;

            XmlDocument xmlDoc = new XmlDocument();

            xmlDoc.LoadXml(DynamicGroupUIHelper.DYNAMIC_CONDITION_UI_XML_CONTENT);
            var cols               = _UIXmlHelper.GetColumnPropertys(xmlDoc);
            var colEdits           = _UIXmlHelper.GetColumnEdits(cols, xmlDoc);
            var gridViewLayoutInfo = _UIXmlHelper.GetGridColumnLayoutInfo(xmlDoc, string.Empty);

            #region 准备数据源
            //先从缓存的地方恢复设置,如果没有
            List <DynamicGroupUIColumns> columns = RestoreDynamicGroupSetting();
            if (columns == null)
            {
                //从配置重初始化
                columns = GetDynamicGroupColumnsFromConfig();
            }
            BindingList <DynamicGroupUIColumns> bindingList = new BindingList <DynamicGroupUIColumns>(columns);
            bindingList.AllowNew    = false;
            bindingList.AllowRemove = false;
            #endregion

            var detailBindingParams = new MB.XWinLib.GridDataBindingParam(grid, bindingList);

            MB.XWinLib.XtraGrid.XtraGridEditHelper gridEditHelper = MB.XWinLib.XtraGrid.XtraGridEditHelper.Instance;
            gridEditHelper.CreateEditXtraGrid(detailBindingParams, cols, colEdits, gridViewLayoutInfo);
            gridEditHelper.AppendEditSelectedColumn(grid, "选择", DynamicGroupUIHelper.DYMANIC_GROUP_COL_SELECTED);


            GridView mainView = grid.MainView as GridView;
            if (mainView != null)
            {
                mainView.OptionsView.NewItemRowPosition  = NewItemRowPosition.None;
                mainView.OptionsSelection.MultiSelect    = true;
                mainView.OptionsBehavior.AllowAddRows    = DevExpress.Utils.DefaultBoolean.False;
                mainView.OptionsBehavior.AllowDeleteRows = DevExpress.Utils.DefaultBoolean.False;
            }

            #region 对聚合的字段加载样式,前景色蓝色
            var aggTypeCol = mainView.Columns.ColumnByFieldName(DynamicGroupUIHelper.DYMANIC_GROUP_AGG_TYPE);
            if (aggTypeCol != null)
            {
                StyleFormatCondition formatCondition = new StyleFormatCondition(
                    DevExpress.XtraGrid.FormatConditionEnum.NotEqual,
                    aggTypeCol, "列类型", string.Empty, null, true);

                formatCondition.Appearance.ForeColor = Color.Blue;
                if (formatCondition != null)
                {
                    mainView.FormatConditions.Add(formatCondition);
                }
            }
            #endregion
        }
Exemple #2
0
        //常规列表
        private void button2_Click(object sender, EventArgs e)
        {
            List <ProductInfo> lstData = _LstEntitys;
            var detailBindingParams    = new MB.XWinLib.GridDataBindingParam(gridControl1, lstData, false);

            _ColPropertys = MB.WinBase.LayoutXmlConfigHelper.Instance.GetColumnPropertys(xmlFileName);
            var editCols           = MB.WinBase.LayoutXmlConfigHelper.Instance.GetColumnEdits(_ColPropertys, xmlFileName);
            var gridViewLayoutInfo = MB.WinBase.LayoutXmlConfigHelper.Instance.GetGridColumnLayoutInfo(xmlFileName, string.Empty);

            MB.XWinLib.XtraGrid.XtraGridEditHelper.Instance.CreateEditXtraGrid(detailBindingParams, _ColPropertys, editCols, gridViewLayoutInfo);
        }
Exemple #3
0
        void DefaultDataImportDialog_Load(object sender, EventArgs e)
        {
            MB.WinBase.Common.GridViewLayoutInfo gridViewLayoutInfo = MB.WinBase.LayoutXmlConfigHelper.Instance.GetGridColumnLayoutInfo(_XmlFileName, string.Empty);
            var detailBindingParams = new MB.XWinLib.GridDataBindingParam(grdCtlMain, _CurrentImportData, false);

            MB.XWinLib.XtraGrid.XtraGridEditHelper.Instance.CreateEditXtraGrid(detailBindingParams, _ColPropertys, _EditCols, gridViewLayoutInfo);
            // MB.XWinLib.XtraGrid.XtraGridHelper.Instance.BindingToXtraGrid(grdCtlMain, _CurrentImportData, _ColPropertys, _EditCols, _XmlFileName, true);

            displayMessage();

            grdCtlMain.ReSetContextMenu(MB.XWinLib.XtraGrid.XtraContextMenuType.SaveGridState |
                                        MB.XWinLib.XtraGrid.XtraContextMenuType.Delete);

            grdCtlMain.BeforeContextMenuClick += new XWinLib.XtraGrid.GridControlExMenuEventHandle(grdCtlMain_BeforeContextMenuClick);

            DevExpress.XtraGrid.Views.Grid.GridView view = grdCtlMain.MainView as DevExpress.XtraGrid.Views.Grid.GridView;
            if (view != null)
            {
                view.RowStyle += new RowStyleEventHandler(view_RowStyle);
            }
        }
Exemple #4
0
        /// <summary>
        ///  动态列绑定处理相关。
        /// </summary>
        /// <param name="dataSource"></param>
        /// <param name="gridControl"></param>
        /// <param name="xmlFileName"></param>
        public void CreateDataBinding(MB.WinBase.Data.HViewDataConvert <T> convertObject, List <T> lstEntitys, string gridLayoutCfgName)
        {
            using (MB.Util.MethodTraceWithTime trace = new MB.Util.MethodTraceWithTime("MB.WinClientDefault.Common.UIDynamicColumnBinding<" + typeof(T).FullName + ">.CreateDataBinding")) {
                _HViewConvertObject = convertObject;
                _CurrentEditEntitys = lstEntitys;


                var gridViewLayoutInfo = MB.WinBase.LayoutXmlConfigHelper.Instance.GetGridColumnLayoutInfo(_CurrentXmlFileName, gridLayoutCfgName);
                MB.XWinLib.XtraGrid.DynamicColumnBandGridHelper <T> dynamicBandHelper = new MB.XWinLib.XtraGrid.DynamicColumnBandGridHelper <T>();


                _CurrentEditTable = convertObject.Convert(lstEntitys, _ColPropertys);

                onAfterDataConvert();

                if (convertObject.ConvertCfgParam.DynamicColumnCaption)
                {
                    gridViewLayoutInfo = dynamicBandHelper.ResetDynamicCaptionColumnViewLayout(convertObject, gridViewLayoutInfo);
                }
                else
                {
                    gridViewLayoutInfo = dynamicBandHelper.ResetDynamicColumnViewLayout(convertObject, gridViewLayoutInfo);
                }

                var detailBindingParams = new MB.XWinLib.GridDataBindingParam(_XtraGrid, _CurrentEditTable, false);


                MB.XWinLib.XtraGrid.XtraGridEditHelper.Instance.CreateEditXtraGrid(detailBindingParams, _ColPropertys, _EditCols, gridViewLayoutInfo);
                //if (convertObject.ConvertCfgParam.DynamicColumnCaption) {
                iniDynamicBandColumns();
                // }
                MB.XWinLib.XtraGrid.XtraGridViewHelper.Instance.SetGridViewNewItem(_XtraGrid, false);
                _XtraGrid.ReSetContextMenu(XtraContextMenuType.QuickInput
                                           | XtraContextMenuType.Export | XtraContextMenuType.SaveGridState);


                setDynamicColumnOnFocusedRowChanged(_AdvBandGridView.FocusedRowHandle);
            }
        }
Exemple #5
0
        protected override void LoadObjectData(MB.Util.Model.QueryParameterInfo[] queryParams)
        {
            if (_ClientRuleObject == null)
            {
                throw new MB.Util.APPException("在加载浏览窗口<DefaultViewForm>时 需要配置对应的ClientRule 类!");
            }

            if (_ClientRuleObject.ClientLayoutAttribute == null)
            {
                throw new MB.Util.APPException(string.Format("对于客户段逻辑类 {0} ,需要配置 RuleClientLayoutAttribute.", _ClientRuleObject.GetType().FullName));
            }



            try {
                //添加右键菜单扩展
                if (_ClientRuleObject.ReSetContextMenu != null)
                {
                    grdCtlMain.ContextMenu = _ClientRuleObject.ReSetContextMenu;
                    //else {
                    //    grdCtlMain.ContextMenu.MenuItems.Add(new MenuItem("-"));
                    //    foreach (MenuItem item in _ClientRuleObject.ReSetContextMenu.MenuItems) {
                    //        grdCtlMain.ContextMenu.MenuItems.Add(item);
                    //    }
                    //}
                }

                string messageHeaderKey = string.Empty;

                if (_ClientRuleObject.ClientLayoutAttribute.LoadType == ClientDataLoadType.ReLoad)
                {
                    messageHeaderKey = _ClientRuleObject.ClientLayoutAttribute.MessageHeaderKey;
                }


                gridViewMain.RowHeight = MB.WinBase.LayoutXmlConfigHelper.Instance.GetMainGridViewRowHeight(_ClientRuleObject.ClientLayoutAttribute.UIXmlConfigFile);
                using (MB.WinBase.WaitCursor cursor = new MB.WinBase.WaitCursor(this)) {
                    using (MethodTraceWithTime timeTrack = new MethodTraceWithTime(null)) {
                        //特殊说明 2009-02-20 在这里需要增加 RefreshLookupDataSource 以便在加载数据ID 时能得到对应的描述信息。
                        if (_ClientRuleObject.ClientLayoutAttribute.CommunicationDataType == CommunicationDataType.DataSet)
                        {
                            throw new MB.Util.APPException("当前不支持基于DataSet 的网格编辑", MB.Util.APPMessageType.SysErrInfo);
                        }
                        else
                        {
                            IList lstDatas = null;
                            try {
                                using (QueryBehaviorScope scope = new QueryBehaviorScope(_ClientRuleObject.CurrentQueryBehavior, messageHeaderKey)) {
                                    lstDatas = _ClientRuleObject.GetObjects((int)_ClientRuleObject.MainDataTypeInDoc, queryParams);
                                }
                            }
                            catch (Exception ex) {
                                throw MB.Util.APPExceptionHandlerHelper.PromoteException(ex, " 在加载编辑网格窗口获取数据时执行业务类的 GetObjects 出错");
                            }

                            //IGridViewEditRule gridViewEditRule = _ClientRuleObject as IGridViewEditRule;
                            //if (gridViewEditRule == null)
                            //    throw new MB.Util.APPException("所有基于Mid 子窗口网格编辑的业务类必须实现IGridViewEditRule 接口", MB.Util.APPMessageType.SysErrInfo);

                            if (_BindingSource == null)
                            {
                                IBindingList bl = _ClientRuleObject.CreateMainBindList(lstDatas);
                                _BindingSource              = new MB.WinBase.Binding.BindingSourceEx();
                                _BindingSource.ListChanged += new ListChangedEventHandler(_BindingSource_ListChanged);
                                _BindingSource.AddingNew   += new AddingNewEventHandler(_BindingSource_AddingNew);
                                _BindingSource.DataSource   = bl;

                                MB.WinBase.Common.GridViewLayoutInfo gridViewLayoutInfo = MB.WinBase.LayoutXmlConfigHelper.Instance.GetGridColumnLayoutInfo(_ClientRuleObject.ClientLayoutAttribute.UIXmlConfigFile, string.Empty);
                                var detailBindingParams = new MB.XWinLib.GridDataBindingParam(grdCtlMain, _BindingSource, false);
                                MB.XWinLib.XtraGrid.XtraGridEditHelper.Instance.CreateEditXtraGrid(detailBindingParams, _ClientRuleObject.UIRuleXmlConfigInfo.GetDefaultColumns(), _ClientRuleObject.UIRuleXmlConfigInfo.ColumnsCfgEdit, gridViewLayoutInfo);
                            }
                            else
                            {
                                MB.XWinLib.XtraGrid.XtraGridHelper.Instance.RefreshDataGrid(grdCtlMain, lstDatas);
                            }
                            #region 刷新status strip

                            int    rowCount = (lstDatas == null ? 0 : lstDatas.Count);
                            var    msg      = string.Format("查询花费:{0} 毫秒,返回 {1} 记录,查询时间:{2}", timeTrack.GetExecutedTimes(), rowCount, DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));
                            string totalPageandCurrentPage = GetTotalPageAndCurrentpage(rowCount);

                            //刷新查询消息
                            labTitleMsg.Text = msg;

                            //刷新上一页/下一页
                            lnkNextPage.Enabled     = rowCount >= _ClientRuleObject.CurrentQueryBehavior.PageSize;
                            lnkPreviousPage.Enabled = _ClientRuleObject.CurrentQueryBehavior.PageIndex > 0;

                            //刷新总页数
                            labTotalPageNumber.Visible   = IsTotalPageDisplayed;
                            labCurrentPageNumber.Visible = IsTotalPageDisplayed;
                            if (this.IsTotalPageDisplayed)
                            {
                                string[] totalPage_currentPage = totalPageandCurrentPage.Split(',');
                                labTotalPageNumber.Text   = string.Format("共{0}页", totalPage_currentPage[0]);
                                labCurrentPageNumber.Text = string.Format("第{0}页", totalPage_currentPage[1]);
                            }


                            #endregion
                            _ClientRuleObject.BindingSource = _BindingSource;
                        }
                        panTitle.Visible = false;
                    }
                }

                //在GRIDVIEW创建完成以后
                //根据UI RULE来判断GRID的编辑状态,是否允许新增,修改,删除
                DevExpress.XtraGrid.Views.Grid.GridView mainView = grdCtlMain.MainView as DevExpress.XtraGrid.Views.Grid.GridView;
                if (_ClientRuleObject != null)
                {
                    var rejectCfg = MB.WinBase.Atts.AttributeConfigHelper.Instance.GetModuleRejectCommands(_ClientRuleObject.GetType());
                    if (rejectCfg != null)
                    {
                        if ((rejectCfg.RejectCommands & UICommandType.AddNew) != 0)
                        {
                            mainView.OptionsBehavior.AllowAddRows   = DevExpress.Utils.DefaultBoolean.False;
                            mainView.OptionsView.NewItemRowPosition = DevExpress.XtraGrid.Views.Grid.NewItemRowPosition.None;
                        }
                        else
                        {
                            mainView.OptionsBehavior.AllowAddRows   = DevExpress.Utils.DefaultBoolean.True;
                            mainView.OptionsView.NewItemRowPosition = DevExpress.XtraGrid.Views.Grid.NewItemRowPosition.Bottom;
                        }

                        if ((rejectCfg.RejectCommands & UICommandType.Edit) != 0)
                        {
                            mainView.OptionsBehavior.ReadOnly = true;
                            mainView.OptionsBehavior.Editable = false;
                        }
                        else
                        {
                            mainView.OptionsBehavior.ReadOnly = false;
                            mainView.OptionsBehavior.Editable = true;
                        }

                        if ((rejectCfg.RejectCommands & UICommandType.Delete) != 0)
                        {
                            mainView.OptionsBehavior.AllowDeleteRows = DevExpress.Utils.DefaultBoolean.False;
                        }
                        else
                        {
                            mainView.OptionsBehavior.AllowDeleteRows = DevExpress.Utils.DefaultBoolean.True;
                        }
                    }
                }
            }
            catch (MB.Util.APPException aex) {
                throw aex;
            }
            catch (Exception ex) {
                throw MB.Util.APPExceptionHandlerHelper.PromoteException(ex, "加载网格浏览编辑窗口Form_Load 时出错");
            }
        }