/// <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); }
/// <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)); }
/// <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); }
//编辑一般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); }