示例#1
0
        /// <summary>
        ///  创建可编辑的XtraGrid 控件。
        /// </summary>
        /// <param name="bindParam"></param>
        /// <param name="configXmlFile"></param>
        /// <returns></returns>
        public bool CreateEditXtraGrid(GridDataBindingParam bindParam,
                                       Dictionary <string, MB.WinBase.Common.ColumnPropertyInfo> colPropertys,
                                       Dictionary <string, MB.WinBase.Common.ColumnEditCfgInfo> editCols,
                                       MB.WinBase.Common.GridViewLayoutInfo gridViewLayoutInfo)
        {
            string viewTypeName = bindParam.XtraGrid.MainView.GetType().Name;

            if (viewTypeName == "GridView")
            {
                editViewGrid(bindParam, colPropertys, editCols, gridViewLayoutInfo);
            }
            else if (viewTypeName == "AdvBandedGridView" || viewTypeName == "BandedGridView")
            {
                if (gridViewLayoutInfo == null)
                {
                    throw new MB.Util.APPException("创建 AdvBandedGridView 网格视图必须在相应的 XML 文件中配置 GridViewLayoutInfo");
                }
                CreateEditBandXtraGrid(bindParam, colPropertys, editCols, gridViewLayoutInfo);
            }
            else
            {
                throw new MB.Util.APPException("目前编辑的XtrGrid 只支持AdvBandedGridView 和 GridView的格式。请检查你设置的XtrGrid View是否为这种类型。");
            }
            return(true);
        }
示例#2
0
        /// <summary>
        /// 创建可编辑的XtraGrid 控件。
        /// </summary>
        /// <param name="bindParam"></param>
        /// <param name="xmlFileName"></param>
        /// <returns></returns>
        public bool CreateEditXtraGrid(GridDataBindingParam bindParam,
                                       string xmlFileName)
        {
            var 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);

            return(CreateEditXtraGrid(bindParam, colPropertys, editCols, gridViewLayoutInfo));
        }
示例#3
0
        /// <summary>
        /// 创建 BandXtraGrid 网格编辑或者浏览数据。
        /// </summary>
        /// <param name="bindParam"></param>
        /// <param name="colPropertys"></param>
        /// <param name="editCols"></param>
        /// <returns></returns>
        public bool CreateEditBandXtraGrid(GridDataBindingParam bindParam,
                                           Dictionary <string, MB.WinBase.Common.ColumnPropertyInfo> colPropertys,
                                           Dictionary <string, MB.WinBase.Common.ColumnEditCfgInfo> editCols,
                                           MB.WinBase.Common.GridViewLayoutInfo gridViewLayoutInfo)
        {
            DevExpress.XtraGrid.GridControl xtraGCtl = bindParam.XtraGrid;
            // object dataSource = bindParam.DataSource;

            DevExpress.XtraGrid.Views.BandedGrid.BandedGridView bandGridView = xtraGCtl.MainView as
                                                                               DevExpress.XtraGrid.Views.BandedGrid.BandedGridView;

            if (bandGridView == null)
            {
                throw new MB.Util.APPException("目前编辑的XtrGrid 只支持AdvBandedGridView的格式。请检查你设置的XtrGrid View是否为这种类型。");
            }
            if (colPropertys == null || colPropertys.Count == 0)
            {
                throw new MB.Util.APPException("ColumnPropertyInfo 的信息 不能为空。");
            }
            //	设置控件的显示样式
            //viewStye.SetStyles(xtraGCtl);
            XtraGridViewHelper.Instance.SetGridView(bandGridView, colPropertys);

            if (bandGridView.Columns.Count > 0)
            {
                bandGridView.Columns.Clear();
            }

            foreach (DevExpress.XtraGrid.Views.BandedGrid.GridBand band in bandGridView.Bands)
            {
                band.Columns.Clear();
            }
            bandGridView.Bands.Clear();

            if (gridViewLayoutInfo == null)
            {
                throw new MB.Util.APPException("在绑定多维表头时,可以没有在对应的XML 文件中配置 对应 GridViews/GridViewLayout", MB.Util.APPMessageType.SysErrInfo);
            }

            //根据业务处理对象得到对应的 UI 编辑设置信息。
            foreach (var columnLayoutInfo in gridViewLayoutInfo.GridLayoutColumns)
            {
                CreateBandedGridViewColumns(bandGridView, null, colPropertys, editCols, gridViewLayoutInfo, columnLayoutInfo);
            }

            //不管什么时候都恢复保存的状态
            XtraGridViewHelper.Instance.RestoreXtraGridState(bindParam.XtraGrid);

            bool isReadonly = gridViewLayoutInfo == null && gridViewLayoutInfo.ReadOnly;
            XtraContextMenuType viewPopuMenus = isReadonly ? XtraContextMenuType.SaveGridState | XtraContextMenuType.Export | XtraContextMenuType.Chart : XtraContextMenuType.SaveGridState | XtraContextMenuType.Export
                                                | XtraContextMenuType.DataImport
                                                | XtraContextMenuType.ColumnsAllowSort
                                                | XtraContextMenuType.BatchAdd
                                                | XtraContextMenuType.QuickInput;

            XtraGridViewHelper.Instance.SetGridViewNewItem(xtraGCtl, true, viewPopuMenus);
            if (isReadonly)
            {
                bandGridView.OptionsView.NewItemRowPosition = DevExpress.XtraGrid.Views.Grid.NewItemRowPosition.None;
            }


            if (colPropertys != null)
            {
                XtraGridViewHelper.Instance.SetGroupSummary(bandGridView, colPropertys);
            }
            xtraGCtl.DataSource = MB.Util.MyConvert.Instance.ToGridViewSource(bindParam.DataSource);
            return(true);
        }
示例#4
0
        //编辑一般ViewGrid 格式
        private bool editViewGrid(GridDataBindingParam bindParam,
                                  Dictionary <string, MB.WinBase.Common.ColumnPropertyInfo> objPropertys,
                                  Dictionary <string, MB.WinBase.Common.ColumnEditCfgInfo> editCols,
                                  MB.WinBase.Common.GridViewLayoutInfo gridViewLayoutInfo)
        {
            if (gridViewLayoutInfo != null)
            {
                MB.Util.TraceEx.Write("OK");
            }

            DevExpress.XtraGrid.GridControl xtraGCtl = bindParam.XtraGrid;

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

            XtraGridViewHelper.Instance.SetXtraGridSkin(xtraGCtl, XtraGridSkin.Edit);



            DevExpress.XtraGrid.Views.Grid.GridView gridView = xtraGCtl.MainView as DevExpress.XtraGrid.Views.Grid.GridView;
            if (gridView == null)
            {
                throw new MB.Util.APPException("目前编辑的XtrGrid 只支持DevExpress.XtraGrid.Views.Grid.GridView的格式。请检查你设置的XtrGrid View是否为这种类型。");
            }
            if (objPropertys == null || objPropertys.Count == 0)
            {
                throw new MB.Util.APPException("业务对象没有配置对应的XML文件Columns 信息。");
            }
            //	设置控件的显示样式
            XtraGridViewHelper.Instance.SetGridView(gridView, objPropertys);

            if (gridView.Columns.Count > 0)
            {
                gridView.Columns.Clear();
                xtraGCtl.RepositoryItems.Clear();
            }

            //根据业务处理对象得到对应的 UI 编辑设置信息。
            int i = 0;

            foreach (MB.WinBase.Common.ColumnPropertyInfo fInfo in objPropertys.Values)
            {
                if (!fInfo.Visibled)
                {
                    continue;
                }
                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, false);
                }

                rEdit.Name = fInfo.Name;

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

                gridView.Columns.Add(bdc);

                GridColumnLayoutInfo layoutInfo = null;
                if (gridViewLayoutInfo != null && gridViewLayoutInfo.GridLayoutColumns.Count > 0)
                {
                    layoutInfo = gridViewLayoutInfo.GridLayoutColumns.FirstOrDefault <MB.WinBase.Common.GridColumnLayoutInfo>(o => o.Name == fInfo.Name);
                }

                SetEditColumn(bdc, fInfo, layoutInfo, gridViewLayoutInfo);

                i++;
            }
            //不管什么时候都恢复保存的状态
            XtraGridViewHelper.Instance.RestoreXtraGridState(bindParam.XtraGrid);
            if (objPropertys != null)
            {
                XtraGridViewHelper.Instance.SetGroupSummary(gridView, objPropertys);
            }

            xtraGCtl.DataSource = MB.Util.MyConvert.Instance.ToGridViewSource(bindParam.DataSource);

            setAllowFocusColumn(gridView);

            XtraContextMenuType viewPopuMenus = XtraContextMenuType.SaveGridState | XtraContextMenuType.Export
                                                | XtraContextMenuType.Delete
                                                | XtraContextMenuType.DataImport
                                                | XtraContextMenuType.ColumnsAllowSort
                                                | XtraContextMenuType.BatchAdd
                                                | XtraContextMenuType.QuickInput
                                                | XtraContextMenuType.ExcelEdit;

            //bool autoNewItem = gridViewLayoutInfo == null || !gridViewLayoutInfo.ReadOnly;
            XtraGridViewHelper.Instance.SetGridViewNewItem(xtraGCtl, true, viewPopuMenus);
            return(true);
        }