예제 #1
0
        protected virtual void UpdateColumns()
        {
            var bindingListSource = DataSource as BindingListSource;

            if (DesignMode)
            {
                return;
            }
            if (null == bindingListSource || null == _viewContext)
            {
                return;
            }
            var newItemProperties = bindingListSource.ItemProperties;

            if (!Equals(newItemProperties, _itemProperties))
            {
                var newColumns = new List <DataGridViewColumn>();
                for (int i = 0; i < newItemProperties.Count; i++)
                {
                    var propertyDescriptor = newItemProperties[i];
                    var column             = _viewContext.CreateGridViewColumn(propertyDescriptor);
                    if (null != column)
                    {
                        newColumns.Add(column);
                    }
                }
                if (newColumns.Count > 0)
                {
                    Columns.Clear();
                    AddColumns(newColumns.ToArray());
                }
                _itemProperties = newItemProperties;
            }
            UpdateColumnFormats(false);
        }
예제 #2
0
        protected virtual void UpdateColumns()
        {
            var bindingListSource = DataSource as BindingListSource;

            if (DesignMode)
            {
                return;
            }
            if (null == bindingListSource || null == _viewContext)
            {
                return;
            }
            var newItemProperties = ImmutableList.ValueOf(bindingListSource.GetItemProperties(null).Cast <PropertyDescriptor>());

            if (Equals(newItemProperties, _itemProperties))
            {
                return;
            }
            var newColumns = new List <DataGridViewColumn>();

            foreach (var propertyDescriptor in newItemProperties)
            {
                var column = _viewContext.CreateGridViewColumn(propertyDescriptor);
                if (null != column)
                {
                    newColumns.Add(column);
                }
            }
            if (newColumns.Count > 0)
            {
                Columns.Clear();
                Columns.AddRange(newColumns.ToArray());
            }
            _itemProperties = newItemProperties;
        }
예제 #3
0
        protected virtual void UpdateColumns()
        {
            if (_inUpdateColumns)
            {
                return;
            }

            try
            {
                _inUpdateColumns = true;
                var bindingListSource = DataSource as BindingListSource;
                if (DesignMode)
                {
                    return;
                }

                if (null == bindingListSource || null == _viewContext)
                {
                    return;
                }

                var columnsToHide       = new HashSet <string>();
                var clusteredProperties =
                    (bindingListSource.ReportResults as ClusteredReportResults)?.ClusteredProperties;
                if (clusteredProperties != null)
                {
                    columnsToHide.UnionWith(clusteredProperties.GetAllColumnHeaderProperties().Select(p => p.Name));
                }

                var newItemProperties = bindingListSource.ItemProperties;
                if (!Equals(newItemProperties, _itemProperties))
                {
                    var newColumns = new List <DataGridViewColumn>();
                    for (int i = 0; i < newItemProperties.Count; i++)
                    {
                        var propertyDescriptor = newItemProperties[i];
                        if (columnsToHide.Contains(propertyDescriptor.Name))
                        {
                            continue;
                        }

                        var column = _viewContext.CreateGridViewColumn(propertyDescriptor);
                        if (null != column)
                        {
                            newColumns.Add(column);
                        }
                    }

                    if (newColumns.Count > 0)
                    {
                        Columns.Clear();
                        AddColumns(newColumns.ToArray());
                    }

                    _itemProperties = newItemProperties;
                }

                UpdateColumnFormats(false);
                UpdateColorScheme();
            }
            finally
            {
                _inUpdateColumns = false;
            }
        }