/// <summary> /// Creates a <see cref="TypeMapper"/> object from a list of cells. /// </summary> /// <param name="columns">The cells.</param> /// <returns>A <see cref="TypeMapper"/> object.</returns> public static TypeMapper Create(IEnumerable <ICell> columns) { var typeMapper = new TypeMapper(); foreach (var col in columns) { var index = col.ColumnIndex; var name = col.StringCellValue; var columnInfo = new DynamicColumnInfo(index, name); typeMapper.ColumnsByIndex.Add(index, new List <ColumnInfo> { columnInfo }); if (!typeMapper.ColumnsByName.TryGetValue(name, out var columnInfos)) { typeMapper.ColumnsByName.Add(name, new List <ColumnInfo> { columnInfo }); } else { columnInfos.Add(columnInfo); } } return(typeMapper); }
/// <summary> /// Creates a <see cref="TypeMapper"/> object from an <see cref="ExpandoObject"/> object. /// </summary> /// <param name="o">The <see cref="ExpandoObject"/> object.</param> /// <returns>A <see cref="TypeMapper"/> object.</returns> public static TypeMapper Create(ExpandoObject o) { var typeMapper = new TypeMapper(); var l = o.ToList(); for (int i = 0; i < o.Count(); i++) { var prop = l[i]; var name = prop.Key; var columnInfo = new DynamicColumnInfo(prop.Key, prop.Value.GetType()); if (!int.TryParse(prop.Key, out _)) { if ((i % 2) == 0 || !int.TryParse(l[i - 1].Key, out var ix)) { ix = i; } typeMapper.ColumnsByIndex.Add(ix, new List <ColumnInfo> { columnInfo }); if (!typeMapper.ColumnsByName.TryGetValue(name, out var columnInfos)) { typeMapper.ColumnsByName.Add(name, new List <ColumnInfo> { columnInfo }); } else { columnInfos.Add(columnInfo); } } } return(typeMapper); }
/// <summary> /// Creates a <see cref="TypeMapper"/> object from an <see cref="ExpandoObject"/> object. /// </summary> /// <param name="o">The <see cref="ExpandoObject"/> object.</param> /// <returns>A <see cref="TypeMapper"/> object.</returns> public static TypeMapper Create(ExpandoObject o) { var typeMapper = new TypeMapper(); var eo = (IDictionary <string, object>)o; var l = o.ToList(); eo.TryGetValue(IndexMapPropertyName, out var map); var oneTwoLetter = map == null && eo.Keys.Where(k => k != IndexMapPropertyName).All(k => OneTwoLetterRegex.IsMatch(k)); for (int i = 0; i < o.Count(); i++) { var prop = l[i]; var name = prop.Key; var ix = i; if (name != IndexMapPropertyName) { if (map is Dictionary <string, int> indexMap) { if (indexMap.TryGetValue(name, out var im)) { ix = im; } } else if (oneTwoLetter) { ix = ExcelMapper.LetterToIndex(name) - 1; } var columnInfo = new DynamicColumnInfo(prop.Key, prop.Value.GetType()); typeMapper.ColumnsByIndex.Add(ix, new List <ColumnInfo> { columnInfo }); if (!typeMapper.ColumnsByName.TryGetValue(name, out var columnInfos)) { typeMapper.ColumnsByName.Add(name, new List <ColumnInfo> { columnInfo }); } else { columnInfos.Add(columnInfo); } } } return(typeMapper); }
/// <summary> /// /// </summary> /// <param name="gridView"></param> /// <param name="columnDic"></param> /// <param name="columnInfo"></param> private static void AddTwoLevelBandAndColumn(BandedGridView gridView, Dictionary <int, GridColumn> columnDic, TwoLevelColumnInfo columnInfo) { GridBand topBand = null, band = null; BandedGridColumn column = null; string topBandUniqueName = DynamicColumnInfo.MakeUniqueName(columnInfo.Column1); topBand = gridView.Bands[topBandUniqueName]; if (topBand == null) { topBand = gridView.Bands.AddBand(columnInfo.Caption1); topBand.Name = topBandUniqueName; topBand.Caption = columnInfo.Caption1; topBand.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; } band = topBand.Children.AddBand(columnInfo.Caption1); band.AppearanceHeader.Options.UseTextOptions = true; //band.AppearanceHeader.TextOptions.WordWrap = DevExpress.Utils.WordWrap.Wrap; band.AppearanceHeader.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Center; band.Name = columnInfo.UniqueName; band.Caption = columnInfo.Caption2; //band.AppearanceHeader.TextOptions.Trimming = DevExpress.Utils.Trimming.None; //band.RowCount = 3; //band.Width = 100; // band.AutoFillDown = true; column = gridView.Columns.Add(); column.Name = columnInfo.UniqueName; column.Caption = columnInfo.Caption2; column.FieldName = String.Format("Cell{0:000}", columnInfo.Order + 1); column.Visible = true; column.OptionsColumn.ShowCaption = true; column.OptionsColumn.AllowEdit = true; column.OptionsColumn.AllowSort = DevExpress.Utils.DefaultBoolean.True; // column.OptionsColumn.FixedWidth = true; column.Width = 100; band.Columns.Add(column); columnDic.Add(columnInfo.Order, column); }
private static void AddBandAndColumn(BandedGridView gridView, Dictionary <int, GridColumn> columnDic, DynamicColumnInfo columnInfo) { OneLevelColumnInfo oneLevelColumnInfo = columnInfo as OneLevelColumnInfo; if (oneLevelColumnInfo != null) { AddOneLevelBandAndColumn(gridView, columnDic, oneLevelColumnInfo); } else { AddTwoLevelBandAndColumn(gridView, columnDic, columnInfo as TwoLevelColumnInfo); } }