示例#1
0
        /// <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);
        }
示例#2
0
        /// <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);
        }
示例#3
0
        /// <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);
        }
示例#4
0
        /// <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);
            }
        }