/// <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 }
//常规列表 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); }
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); } }
/// <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); } }
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 时出错"); } }