/// <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 DynamicGroupCfgInfo _DynamicCfgInfo; //动态聚组的配置 #region 构造函数 /// <summary> /// 构造实例 /// </summary> /// <param name="clientRuleObject">客户端UI Rule</param> /// <param name="girdControl">用于显示的Grid Control</param> public DynamicGroupUIHelper(IClientRuleQueryBase clientRuleObject, MB.XWinLib.XtraGrid.GridControlEx girdControl) { _ClientRuleObject = clientRuleObject; _GirdControl = girdControl; _UIXmlHelper = LayoutXmlConfigHelper.Instance; _DynamicGroupConfigHelper = new DynamicGroupCfgHelper(_ClientRuleObject.ClientLayoutAttribute.UIXmlConfigFile); _DynamicCfgInfo = _DynamicGroupConfigHelper.LoadDynamicGroupCfg(_ClientRuleObject); }
/// <summary> /// 根据Grid得到动态聚组的最终结果,用来传递到服务端 /// </summary> /// <param name="dyUIColumns">用来保存Grid的当前状态</param> /// <returns>动态聚组设定,用来传递到服务端的</returns> public MB.Util.Model.DynamicGroupSetting GetDynamicGroupSetting(ref List <DynamicGroupUIColumns> dyUIColumns) { //用到的全局变量 DynamicGroupCfgInfo dyConfigInfo = _DynamicCfgInfo; GridControlEx grid = _GirdControl; DynamicGroupSetting setting = new DynamicGroupSetting(); //设置实体 setting.EntityInfos.MainEntity = dyConfigInfo.MainEntityInfo; setting.EntityInfos.DetailEntity = dyConfigInfo.DetailEntityInfo; //设置关系 if (_DynamicCfgInfo.RelationInfo != null) { setting.RelationInfos = _DynamicCfgInfo.RelationInfo.Values.ToList <DynamicGroupRelationInfo>(); } BindingList <DynamicGroupUIColumns> uiColList = grid.DataSource as BindingList <DynamicGroupUIColumns>; foreach (DynamicGroupUIColumns column in uiColList) { dyUIColumns.Add(column); if (!column.SELECTED) { continue; } string entityName = column.ENTITY_NAME; string colName = column.COLUMN_NAME; if (string.IsNullOrEmpty(column.AGG_TYPE)) { //对分组列做处理 if (setting.GroupFields.ContainsKey(entityName)) { setting.GroupFields[entityName].Add(colName); } else { var list = new List <string>(); list.Add(colName); setting.GroupFields.Add(entityName, list); } } else { //对聚组列做处理 DataAreaField dataField = new DataAreaField(); dataField.Name = colName; dataField.Description = column.COLUMN_DESCRIPTION; dataField.SummaryItemType = (MB.Util.Model.SummaryItemType)Enum.Parse(typeof(MB.Util.Model.SummaryItemType), column.AGG_TYPE.ToString(), true); if (string.Compare(dyConfigInfo.MainEntityInfo.Name, entityName) == 0) { dataField.DataType = dyConfigInfo.MainEntityColInfo[colName].DataType; dataField.EntityName = entityName; dataField.EntityDescription = dyConfigInfo.MainEntityInfo.Description; if (!string.IsNullOrEmpty(column.AGG_CONDITION_OPERATOR) && !string.IsNullOrEmpty(column.AGG_VALUE)) { dataField.ConditionOperator = (DynamicGroupConditionOperator)Enum.Parse(typeof(DynamicGroupConditionOperator), column.AGG_CONDITION_OPERATOR); dataField.ConditionValue = column.AGG_VALUE; } } else { if (dyConfigInfo.DetailEntityInfo != null) { dataField.DataType = dyConfigInfo.DetailEntityColInfo[colName].DataType; dataField.EntityName = entityName; dataField.EntityDescription = dyConfigInfo.DetailEntityInfo.Description; if (!string.IsNullOrEmpty(column.AGG_CONDITION_OPERATOR) && !string.IsNullOrEmpty(column.AGG_VALUE)) { dataField.ConditionOperator = (DynamicGroupConditionOperator)Enum.Parse(typeof(DynamicGroupConditionOperator), column.AGG_CONDITION_OPERATOR); dataField.ConditionValue = column.AGG_VALUE; } } } if (setting.DataAreaFields.ContainsKey(entityName)) { setting.DataAreaFields[entityName].Add(dataField); } else { var list = new List <DataAreaField>(); list.Add(dataField); setting.DataAreaFields.Add(entityName, list); } } } return(setting); }