/// <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)); }
/// <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); }