/// <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> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { this.gridControlEx1 = new Ultra.FASControls.GridControlEx(); this.gridView1 = new DevExpress.XtraGrid.Views.Grid.GridView(); ((System.ComponentModel.ISupportInitialize)(this.pnlMain)).BeginInit(); this.pnlMain.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.pnlFill)).BeginInit(); this.pnlFill.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.pnlBottom)).BeginInit(); this.pnlBottom.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this.gridControlEx1)).BeginInit(); ((System.ComponentModel.ISupportInitialize)(this.gridView1)).BeginInit(); this.SuspendLayout(); // // pnlMain // this.pnlMain.Size = new System.Drawing.Size(704, 430); // // pnlFill // this.pnlFill.Controls.Add(this.gridControlEx1); this.pnlFill.Size = new System.Drawing.Size(704, 384); // // pnlBottom // this.pnlBottom.Location = new System.Drawing.Point(0, 384); this.pnlBottom.Size = new System.Drawing.Size(704, 46); // // gridControlEx1 // this.gridControlEx1.ColorFieldName = null; this.gridControlEx1.Dock = System.Windows.Forms.DockStyle.Fill; this.gridControlEx1.Location = new System.Drawing.Point(2, 2); this.gridControlEx1.MainView = this.gridView1; this.gridControlEx1.Name = "gridControlEx1"; this.gridControlEx1.ShowIndicator = true; this.gridControlEx1.ShowRowNumber = true; this.gridControlEx1.Size = new System.Drawing.Size(700, 380); this.gridControlEx1.TabIndex = 0; this.gridControlEx1.ViewCollection.AddRange(new DevExpress.XtraGrid.Views.Base.BaseView[] { this.gridView1}); // // gridView1 // this.gridView1.Appearance.FocusedRow.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(80)))), ((int)(((byte)(20)))), ((int)(((byte)(20))))); this.gridView1.Appearance.FocusedRow.Options.UseBackColor = true; this.gridView1.Appearance.SelectedRow.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(70)))), ((int)(((byte)(80)))), ((int)(((byte)(20)))), ((int)(((byte)(20))))); this.gridView1.Appearance.SelectedRow.Options.UseBackColor = true; this.gridView1.GridControl = this.gridControlEx1; this.gridView1.Name = "gridView1"; this.gridView1.OptionsBehavior.Editable = false; this.gridView1.OptionsView.ShowAutoFilterRow = true; this.gridView1.OptionsView.ShowGroupPanel = false; // // BasePopupView // this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 14F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(704, 430); this.Name = "BasePopupView"; this.Text = "BasePopupView"; ((System.ComponentModel.ISupportInitialize)(this.pnlMain)).EndInit(); this.pnlMain.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)(this.pnlFill)).EndInit(); this.pnlFill.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)(this.pnlBottom)).EndInit(); this.pnlBottom.ResumeLayout(false); ((System.ComponentModel.ISupportInitialize)(this.gridControlEx1)).EndInit(); ((System.ComponentModel.ISupportInitialize)(this.gridView1)).EndInit(); this.ResumeLayout(false); }
/// <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); }