/// <summary> /// /// </summary> /// <returns></returns> public object Clone() { GridColumnLayoutInfo clone = base.MemberwiseClone() as GridColumnLayoutInfo; List <GridColumnLayoutInfo> cloneChilds = new List <GridColumnLayoutInfo>(); foreach (var child in _Childs) { cloneChilds.Add((GridColumnLayoutInfo)child.Clone()); } clone.Childs = cloneChilds; return(clone); }
/// <summary> /// 通过XML布局的配置信息创建布局列. /// </summary> /// <param name="bandGridView"></param> /// <param name="gridBand"></param> /// <param name="colPropertys"></param> /// <param name="editCols"></param> /// <param name="gridViewLayoutInfo"></param> /// <param name="columnLayoutInfo"></param> public void CreateBandedGridViewColumns(DevExpress.XtraGrid.Views.BandedGrid.BandedGridView bandGridView, DevExpress.XtraGrid.Views.BandedGrid.GridBand gridBand, Dictionary <string, MB.WinBase.Common.ColumnPropertyInfo> colPropertys, Dictionary <string, MB.WinBase.Common.ColumnEditCfgInfo> editCols, MB.WinBase.Common.GridViewLayoutInfo gridViewLayoutInfo, MB.WinBase.Common.GridColumnLayoutInfo columnLayoutInfo) { if (string.Compare(columnLayoutInfo.Type, XtraGridViewHelper.BAND_TYPE_NAME, true) == 0) { createGridBand(bandGridView, gridBand, colPropertys, editCols, gridViewLayoutInfo, columnLayoutInfo); } else { DevExpress.XtraGrid.Views.BandedGrid.BandedGridColumn bColumn = new DevExpress.XtraGrid.Views.BandedGrid.BandedGridColumn(); if (!colPropertys.ContainsKey(columnLayoutInfo.ColumnXmlCfgName)) { return; } createBandColumn(bandGridView, gridBand, colPropertys, editCols, gridViewLayoutInfo, columnLayoutInfo, bColumn); } }
/// <summary> /// 根据配置的XML文件设置列的信息。 /// </summary> /// <param name="pColumn"></param> /// <param name="pFieldInfo"></param> public void SetEditColumn(DevExpress.XtraGrid.Columns.GridColumn gridColumn, MB.WinBase.Common.ColumnPropertyInfo columnPropertyInfo, MB.WinBase.Common.GridColumnLayoutInfo columnLayoutInfo, MB.WinBase.Common.GridViewLayoutInfo gridViewLayoutInfo) { gridColumn.Caption = columnPropertyInfo.Description; if (columnLayoutInfo != null) { gridColumn.FieldName = columnLayoutInfo.Name; } else { gridColumn.FieldName = columnPropertyInfo.Name; } gridColumn.Name = "XtCol" + columnPropertyInfo.Name; gridColumn.Width = columnPropertyInfo.VisibleWidth; if (columnPropertyInfo.Visibled && columnPropertyInfo.VisibleWidth > 0) { gridColumn.VisibleIndex = columnPropertyInfo.OrderIndex; } else { gridColumn.VisibleIndex = -1; } if (columnPropertyInfo.DataType == "Systen.Byte[]") //目前先假设System.Byte[] 类型都是 System.Image { } else { gridColumn.OptionsColumn.AllowSort = columnPropertyInfo.CanSort ? DevExpress.Utils.DefaultBoolean.True : DevExpress.Utils.DefaultBoolean.False; gridColumn.OptionsColumn.AllowGroup = columnPropertyInfo.CanGroup ? DevExpress.Utils.DefaultBoolean.True : DevExpress.Utils.DefaultBoolean.False; } if (gridViewLayoutInfo != null && gridViewLayoutInfo.ReadOnly) { XtraGridViewHelper.Instance.SetColumn(gridColumn, columnPropertyInfo, columnLayoutInfo.Name); } else { gridColumn.OptionsColumn.ReadOnly = !columnPropertyInfo.CanEdit; if (columnPropertyInfo.CanEdit) { if (columnPropertyInfo.IsKey) { gridColumn.AppearanceHeader.Font = new Font(gridColumn.AppearanceHeader.Font, System.Drawing.FontStyle.Bold); gridColumn.AppearanceHeader.ForeColor = Color.Red; //不可重复项目为红色而且是粗体。 } else if (!columnPropertyInfo.IsNull) { gridColumn.AppearanceHeader.ForeColor = Color.Red; //红色为必填项 } else { gridColumn.AppearanceHeader.ForeColor = Color.Blue; //蓝色为可编辑项 } } else { //gridColumn.OptionsColumn.AllowFocus = true; gridColumn.OptionsColumn.AllowEdit = false; gridColumn.AppearanceCell.Font = new Font(gridColumn.AppearanceCell.Font, System.Drawing.FontStyle.Bold); gridColumn.AppearanceCell.BackColor = Color.WhiteSmoke; } } if (columnLayoutInfo != null) { XtraGridViewHelper.Instance.SetColumnDisplayFormat(gridColumn, columnPropertyInfo, columnLayoutInfo); } }
/// <summary> /// 根据配置的XML文件设置列的信息。 /// </summary> /// <param name="gridColumn"></param> /// <param name="columnPropertyInfo"></param> /// <param name="columnLayoutInfo"></param> /// <param name="gridViewLayoutInfo"></param> public void SetEditColumn(DevExpress.XtraGrid.Columns.GridColumn gridColumn, MB.WinBase.Common.ColumnPropertyInfo columnPropertyInfo, MB.WinBase.Common.GridColumnLayoutInfo columnLayoutInfo) { SetEditColumn(gridColumn, columnPropertyInfo, columnLayoutInfo, null); }
//创建BandColumn private void createBandColumn(DevExpress.XtraGrid.Views.BandedGrid.BandedGridView bandGridView, DevExpress.XtraGrid.Views.BandedGrid.GridBand gridBand, Dictionary <string, MB.WinBase.Common.ColumnPropertyInfo> colPropertys, Dictionary <string, MB.WinBase.Common.ColumnEditCfgInfo> editCols, MB.WinBase.Common.GridViewLayoutInfo gridViewLayoutInfo, MB.WinBase.Common.GridColumnLayoutInfo columnLayoutInfo, DevExpress.XtraGrid.Views.BandedGrid.BandedGridColumn bColumn) { MB.WinBase.Common.ColumnPropertyInfo fInfo = colPropertys[columnLayoutInfo.ColumnXmlCfgName]; //判断该列是否可以进行编辑 DevExpress.XtraEditors.Repository.RepositoryItem rEdit = null; if (editCols != null && editCols.ContainsKey(columnLayoutInfo.ColumnXmlCfgName)) { rEdit = CreateEditItemByEditInfo(editCols[columnLayoutInfo.ColumnXmlCfgName], fInfo.CanEdit, fInfo.DataType);//根据用户XML配置的信息获取一个编辑的列。 } else { rEdit = CreateEditItemByCol(fInfo, false); } rEdit.Name = fInfo.Name; bColumn.ColumnEdit = rEdit; bColumn.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; // bColumn.DisplayFormat = new DevExpress.Utils.FormatInfo bandGridView.GridControl.RepositoryItems.Add(rEdit); //这句代码必须添加上,否则顺序的调整将会出现问题。 bandGridView.Columns.Add(bColumn); if (gridBand != null) { gridBand.Columns.Add(bColumn); } SetEditColumn(bColumn, fInfo, columnLayoutInfo, gridViewLayoutInfo); }
//创建网格的GridBand。 private void createGridBand(DevExpress.XtraGrid.Views.BandedGrid.BandedGridView bandGridView, DevExpress.XtraGrid.Views.BandedGrid.GridBand gridBand, Dictionary <string, MB.WinBase.Common.ColumnPropertyInfo> colPropertys, Dictionary <string, MB.WinBase.Common.ColumnEditCfgInfo> editCols, MB.WinBase.Common.GridViewLayoutInfo gridViewLayoutInfo, MB.WinBase.Common.GridColumnLayoutInfo columnLayoutInfo) { DevExpress.XtraGrid.Views.BandedGrid.GridBand bdc = new DevExpress.XtraGrid.Views.BandedGrid.GridBand(); if (!string.IsNullOrEmpty(columnLayoutInfo.Name)) { bdc.Name = columnLayoutInfo.Name; } if (gridBand == null) { bandGridView.Bands.Add(bdc); } else { gridBand.Children.Add(bdc); } bdc.Width = columnLayoutInfo.VisibleWidth; bdc.Caption = columnLayoutInfo.Text; bdc.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; // bdc.Index = columnLayoutInfo.Index; //背景颜色处理 if (!string.IsNullOrEmpty(columnLayoutInfo.BackColor)) { Color bc = MB.Util.MyConvert.Instance.ToColor(columnLayoutInfo.BackColor); if (bc != Color.Empty) { bdc.AppearanceHeader.BackColor2 = bc; } } //字体颜色 if (!string.IsNullOrEmpty(columnLayoutInfo.ForeColor)) { Color fc = MB.Util.MyConvert.Instance.ToColor(columnLayoutInfo.ForeColor); if (fc != Color.Empty) { bdc.AppearanceHeader.ForeColor = fc; } } //字体颜色 if (columnLayoutInfo.ForeFontSize > 1) { bdc.AppearanceHeader.Font = new Font(bdc.AppearanceHeader.Font.FontFamily, columnLayoutInfo.ForeFontSize); } if (columnLayoutInfo.Childs != null && columnLayoutInfo.Childs.Count > 0) { { foreach (var childLayoutInfo in columnLayoutInfo.Childs) { CreateBandedGridViewColumns(bandGridView, bdc, colPropertys, editCols, gridViewLayoutInfo, childLayoutInfo); } } } if (columnLayoutInfo.Fixed != MB.WinBase.Common.FixedStyle.None) { if (columnLayoutInfo.Fixed == MB.WinBase.Common.FixedStyle.Left) { bdc.Fixed = DevExpress.XtraGrid.Columns.FixedStyle.Left; } else { bdc.Fixed = DevExpress.XtraGrid.Columns.FixedStyle.Right; } } }
/// <summary> /// 创建当前不带Childs 的副表。 /// </summary> /// <returns></returns> public GridColumnLayoutInfo CloneWithoutChilds() { GridColumnLayoutInfo clone = base.MemberwiseClone() as GridColumnLayoutInfo; return(clone); }