Exemplo n.º 1
0
        /// <summary>
        /// Binds a data grid view to the given binding list of rows
        /// </summary>
        /// <param name="rows">The rows.</param>
        /// <param name="autoGenerateColumns">Indicates if columns should be dynamically added based on the bound type</param>
        /// <param name="sortStateOverride">Optional sort state to apply regardless of the current sort state of the grid.</param>
        /// <param name="defaultSortState">Optional default sort state, to be applied when there is no current or override sort state.</param>
        /// <param name="selectionStateOverride"></param>
        public bool BindTo([NotNull] IList <ROW> rows,
                           bool autoGenerateColumns = false,
                           DataGridViewSortState sortStateOverride = null,
                           DataGridViewSortState defaultSortState  = null,
                           BoundDataGridSelectionState <ROW> selectionStateOverride = null)
        {
            Assert.ArgumentNotNull(rows, nameof(rows));

            return(DataGridViewUtils.BindTo(_dataGridView, rows,
                                            autoGenerateColumns,
                                            sortStateOverride,
                                            defaultSortState,
                                            selectionStateOverride));
        }
Exemplo n.º 2
0
        /// <summary>
        /// Binds a data grid view to the given list of rows
        /// </summary>
        /// <param name="grid">The data grid view to bind to the list</param>
        /// <param name="rows">The rows.</param>
        /// <param name="autoGenerateColumns">Indicates if columns should be dynamically added based on the bound type</param>
        /// <param name="sortStateOverride">Optional sort state to apply regardless of the current sort state of the grid.</param>
        /// <param name="defaultSortState">Optional default sort state, to be applied when there is no current or override sort state.</param>
        /// <param name="selectionStateOverride"></param>
        public static bool BindTo <TRow>(
            [NotNull] DataGridView grid,
            [NotNull] IList <TRow> rows,
            bool autoGenerateColumns = false,
            [CanBeNull] DataGridViewSortState sortStateOverride = null,
            DataGridViewSortState defaultSortState = null,
            [CanBeNull] BoundDataGridSelectionState <TRow> selectionStateOverride = null)
            where TRow : class
        {
            Assert.ArgumentNotNull(grid, nameof(grid));
            Assert.ArgumentNotNull(rows, nameof(rows));

            var sortState = sortStateOverride ??
                            (defaultSortState != null &&
                             (grid.SortedColumn == null ||
                              grid.SortOrder == SortOrder.None)
                                                 ? defaultSortState
                                                 : new DataGridViewSortState(grid));

            var  bindingList = rows as IBindingList;
            bool presorted   = bindingList != null &&
                               TrySortBindingList <TRow>(bindingList, grid, sortState);

            var selectionState = selectionStateOverride ?? GetSelectionState <TRow>(grid);

            grid.AutoGenerateColumns = autoGenerateColumns;

            grid.DataSource = typeof(TRow);
            grid.DataSource = rows;

            bool sortingApplied = presorted || TryApplySortState(grid, sortState);

            RestoreSelection(grid, selectionState);

            return(sortingApplied);
        }