/// <summary> /// 构造函数... /// </summary> /// <param name="buiObj"></param> /// <param name="xtraGrid"></param> /// <param name="importProvider"></param> /// <param name="ignoreObjectKey"></param> public ImportEngine(Dictionary <string, MB.WinBase.Common.ColumnEditCfgInfo> editColumns, DevExpress.XtraGrid.GridControl xtraGrid, MB.WinEIDrive.Import.IImportProvider importProvider) { _EditColumns = editColumns; _LookUpData = convertTableToHasTable(_EditColumns); _GridView = xtraGrid.DefaultView as DevExpress.XtraGrid.Views.Grid.GridView; if (_GridView == null) { throw new MB.Util.APPException("目前只支持对GridView 控件的导入处理。", MB.Util.APPMessageType.DisplayToUser); } _ImportProvider = importProvider; _ImportProvider.DataProgress += new MB.WinEIDrive.Import.ImportProgressEventHandler(_ImportProvider_DataProgress); MB.XWinLib.XtraGrid.GridControlEx gEx = xtraGrid as MB.XWinLib.XtraGrid.GridControlEx; if (gEx != null) { _DataIOControl = gEx.DataIOControl; } if (_DataIOControl == null) { _DataIOControl = new MB.XWinLib.XtraGrid.GridExDataIOControl(true); } }
/// <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); }
//卡片编辑 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); }
//绑定到GridView 数据源。 private bool createGridView(DevExpress.XtraGrid.GridControl xtraGrid, object dataSource, Dictionary <string, MB.WinBase.Common.ColumnPropertyInfo> colPropertys, bool imageDockRow, Dictionary <string, MB.WinBase.Common.ColumnEditCfgInfo> editCols, MB.WinBase.Common.GridViewLayoutInfo gridViewLayoutInfo) { object pictureEdit; MB.XWinLib.XtraGrid.GridControlEx grdEx = xtraGrid as MB.XWinLib.XtraGrid.GridControlEx; if (grdEx != null) { grdEx.ShowOptionMenu = true; if (grdEx.ContextMenu == null) { grdEx.ReSetContextMenu(XtraContextMenuType.SaveGridState | XtraContextMenuType.Export | XtraContextMenuType.ColumnsAllowSort | XtraContextMenuType.Copy | XtraContextMenuType.Chart); } } if (xtraGrid.RepositoryItems.Count > 0) { if (imageDockRow) { pictureEdit = xtraGrid.RepositoryItems[0] as DevExpress.XtraEditors.Repository.RepositoryItemPictureEdit; } else { pictureEdit = xtraGrid.RepositoryItems[0] as DevExpress.XtraEditors.Repository.RepositoryItemImageEdit; } } else { if (imageDockRow) { pictureEdit = new DevExpress.XtraEditors.Repository.RepositoryItemPictureEdit(); (pictureEdit as DevExpress.XtraEditors.Repository.RepositoryItemPictureEdit).SizeMode = DevExpress.XtraEditors.Controls.PictureSizeMode.Zoom; } else { pictureEdit = new DevExpress.XtraEditors.Repository.RepositoryItemImageEdit(); } if (imageDockRow) { xtraGrid.RepositoryItems.Add(pictureEdit as DevExpress.XtraEditors.Repository.RepositoryItemPictureEdit); } else { xtraGrid.RepositoryItems.Add(pictureEdit as DevExpress.XtraEditors.Repository.RepositoryItemImageEdit); } } DevExpress.XtraGrid.Views.Grid.GridView gridView = xtraGrid.MainView as DevExpress.XtraGrid.Views.Grid.GridView; XtraGridViewHelper.Instance.SetGridView(gridView, colPropertys); XtraGridViewHelper.Instance.CreateViewColumns(xtraGrid, dataSource, colPropertys, pictureEdit, editCols, gridViewLayoutInfo); //if (colPropertys != null) { // XtraGridViewHelper.Instance.SetGroupSummary(gridView, colPropertys); //} //增加保存Grid UI 操作状态而增加的。 XtraGridViewHelper.Instance.RestoreXtraGridState(xtraGrid); DataView dv = MB.Util.MyConvert.Instance.ToDataView(dataSource, null); if (dv != null) { xtraGrid.DataSource = dv; } else { xtraGrid.DataSource = dataSource; } return(true); }