Add option to reorder ProductsGrid columns
This commit is contained in:
parent
aecc54401d
commit
9fe95bbddc
@ -128,6 +128,12 @@ namespace AppScaffolding
|
||||
|
||||
if (!config.Exists(nameof(config.HiddenGridColumns)))
|
||||
config.HiddenGridColumns = Array.Empty<string>();
|
||||
|
||||
if (!config.Exists(nameof(config.GridColumnsDisplayIndices)))
|
||||
{
|
||||
int startIndex = 0;
|
||||
config.GridColumnsDisplayIndices = new int[30].Select(_ => startIndex++).ToArray();
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>Initialize logging. Run after migration</summary>
|
||||
|
||||
@ -187,6 +187,13 @@ namespace LibationFileManager
|
||||
set => persistentDictionary.SetNonString(nameof(HiddenGridColumns), value);
|
||||
}
|
||||
|
||||
[Description("A DisplayIndex list of columns in ProductsGrid")]
|
||||
public int[] GridColumnsDisplayIndices
|
||||
{
|
||||
get => persistentDictionary.GetNonString<int[]>(nameof(GridColumnsDisplayIndices));
|
||||
set => persistentDictionary.SetNonString(nameof(GridColumnsDisplayIndices), value);
|
||||
}
|
||||
|
||||
public enum BadBookAction
|
||||
{
|
||||
[Description("Ask each time what action to take.")]
|
||||
|
||||
@ -59,6 +59,7 @@
|
||||
//
|
||||
this.gridEntryDataGridView.AllowUserToAddRows = false;
|
||||
this.gridEntryDataGridView.AllowUserToDeleteRows = false;
|
||||
this.gridEntryDataGridView.AllowUserToOrderColumns = true;
|
||||
this.gridEntryDataGridView.AllowUserToResizeRows = false;
|
||||
this.gridEntryDataGridView.AutoGenerateColumns = false;
|
||||
this.gridEntryDataGridView.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
|
||||
@ -96,6 +97,7 @@
|
||||
this.gridEntryDataGridView.RowTemplate.Height = 82;
|
||||
this.gridEntryDataGridView.Size = new System.Drawing.Size(1510, 380);
|
||||
this.gridEntryDataGridView.TabIndex = 0;
|
||||
this.gridEntryDataGridView.ColumnDisplayIndexChanged += new System.Windows.Forms.DataGridViewColumnEventHandler(this.gridEntryDataGridView_ColumnDisplayIndexChanged);
|
||||
//
|
||||
// dataGridViewImageButtonBoxColumn1
|
||||
//
|
||||
@ -211,7 +213,7 @@
|
||||
// contextMenuStrip1
|
||||
//
|
||||
this.contextMenuStrip1.Name = "contextMenuStrip1";
|
||||
this.contextMenuStrip1.Size = new System.Drawing.Size(181, 26);
|
||||
this.contextMenuStrip1.Size = new System.Drawing.Size(61, 4);
|
||||
//
|
||||
// ProductsGrid
|
||||
//
|
||||
|
||||
@ -39,15 +39,17 @@ namespace LibationWinForms
|
||||
{
|
||||
InitializeComponent();
|
||||
|
||||
var hiddenGridEntries = Configuration.Instance.HiddenGridColumns;
|
||||
//Restore Grid Display Settings
|
||||
var config = Configuration.Instance;
|
||||
var displayIndices = config.GridColumnsDisplayIndices;
|
||||
|
||||
contextMenuStrip1.Items.Add(new ToolStripLabel("Show / Hide Columns"));
|
||||
contextMenuStrip1.Items.Add(new ToolStripSeparator());
|
||||
|
||||
var columnIndex = 0;
|
||||
foreach (DataGridViewColumn column in _dataGridView.Columns)
|
||||
{
|
||||
var visible = !hiddenGridEntries.Contains(column.DataPropertyName);
|
||||
|
||||
var visible = !config.HiddenGridColumns.Contains(column.DataPropertyName);
|
||||
var itemName = column.DataPropertyName;
|
||||
|
||||
var menuItem = new ToolStripMenuItem()
|
||||
@ -60,6 +62,7 @@ namespace LibationWinForms
|
||||
contextMenuStrip1.Items.Add(menuItem);
|
||||
|
||||
column.Visible = visible;
|
||||
column.DisplayIndex = displayIndices[columnIndex++];
|
||||
}
|
||||
|
||||
// sorting breaks filters. must reapply filters after sorting
|
||||
@ -74,7 +77,9 @@ namespace LibationWinForms
|
||||
var menuItem = sender as ToolStripMenuItem;
|
||||
var propertyName = menuItem.Tag as string;
|
||||
|
||||
var column = _dataGridView.Columns.Cast<DataGridViewColumn>().FirstOrDefault(c => c.DataPropertyName == propertyName);
|
||||
var column = _dataGridView.Columns
|
||||
.Cast<DataGridViewColumn>()
|
||||
.FirstOrDefault(c => c.DataPropertyName == propertyName);
|
||||
|
||||
if (column != null)
|
||||
{
|
||||
@ -82,16 +87,12 @@ namespace LibationWinForms
|
||||
menuItem.Checked = !visible;
|
||||
column.Visible = !visible;
|
||||
|
||||
var config = Configuration.Instance;
|
||||
|
||||
var hiddenColumns = new List<string>(config.HiddenGridColumns);
|
||||
|
||||
if (column.Visible && hiddenColumns.Contains(propertyName))
|
||||
hiddenColumns.Remove(propertyName);
|
||||
else if (!hiddenColumns.Contains(propertyName))
|
||||
hiddenColumns.Add(propertyName);
|
||||
|
||||
config.HiddenGridColumns = hiddenColumns.ToArray();
|
||||
Configuration.Instance.HiddenGridColumns =
|
||||
_dataGridView.Columns
|
||||
.Cast<DataGridViewColumn>()
|
||||
.Where(c=>!c.Visible)
|
||||
.Select(c => c.DataPropertyName)
|
||||
.ToArray();
|
||||
}
|
||||
}
|
||||
private void EnableDoubleBuffering()
|
||||
@ -276,5 +277,13 @@ namespace LibationWinForms
|
||||
private GridEntry getGridEntry(int rowIndex) => _dataGridView.GetBoundItem<GridEntry>(rowIndex);
|
||||
#endregion
|
||||
|
||||
private void gridEntryDataGridView_ColumnDisplayIndexChanged(object sender, DataGridViewColumnEventArgs e)
|
||||
{
|
||||
Configuration.Instance.GridColumnsDisplayIndices
|
||||
= _dataGridView.Columns
|
||||
.Cast<DataGridViewColumn>()
|
||||
.Select(c => c.DisplayIndex)
|
||||
.ToArray();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user