Add option for user to hide columns in ProductsGrid
This commit is contained in:
parent
15b6b673d7
commit
aecc54401d
@ -125,6 +125,9 @@ namespace AppScaffolding
|
|||||||
|
|
||||||
if (!config.Exists(nameof(config.AutoScan)))
|
if (!config.Exists(nameof(config.AutoScan)))
|
||||||
config.AutoScan = true;
|
config.AutoScan = true;
|
||||||
|
|
||||||
|
if (!config.Exists(nameof(config.HiddenGridColumns)))
|
||||||
|
config.HiddenGridColumns = Array.Empty<string>();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>Initialize logging. Run after migration</summary>
|
/// <summary>Initialize logging. Run after migration</summary>
|
||||||
|
|||||||
@ -52,6 +52,7 @@ namespace FileManager
|
|||||||
if (obj is null) return default;
|
if (obj is null) return default;
|
||||||
if (obj is JValue jValue) return jValue.Value<T>();
|
if (obj is JValue jValue) return jValue.Value<T>();
|
||||||
if (obj is JObject jObject) return jObject.ToObject<T>();
|
if (obj is JObject jObject) return jObject.ToObject<T>();
|
||||||
|
if (obj is JArray jArray && typeof(T).IsArray) return jArray.ToObject<T>();
|
||||||
return (T)obj;
|
return (T)obj;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -180,6 +180,13 @@ namespace LibationFileManager
|
|||||||
set => persistentDictionary.SetNonString(nameof(LameVBRQuality), value);
|
set => persistentDictionary.SetNonString(nameof(LameVBRQuality), value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Description("A list of GridView data property names whose columns should be hidden in ProductsGrid")]
|
||||||
|
public string[] HiddenGridColumns
|
||||||
|
{
|
||||||
|
get => persistentDictionary.GetNonString<string[]>(nameof(HiddenGridColumns));
|
||||||
|
set => persistentDictionary.SetNonString(nameof(HiddenGridColumns), value);
|
||||||
|
}
|
||||||
|
|
||||||
public enum BadBookAction
|
public enum BadBookAction
|
||||||
{
|
{
|
||||||
[Description("Ask each time what action to take.")]
|
[Description("Ask each time what action to take.")]
|
||||||
|
|||||||
@ -46,6 +46,7 @@
|
|||||||
this.dataGridViewTextBoxColumn10 = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
this.dataGridViewTextBoxColumn10 = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||||
this.dataGridViewTextBoxColumn11 = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
this.dataGridViewTextBoxColumn11 = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||||
this.dataGridViewImageButtonBoxColumn2 = new LibationWinForms.EditTagsDataGridViewImageButtonColumn();
|
this.dataGridViewImageButtonBoxColumn2 = new LibationWinForms.EditTagsDataGridViewImageButtonColumn();
|
||||||
|
this.contextMenuStrip1 = new System.Windows.Forms.ContextMenuStrip(this.components);
|
||||||
((System.ComponentModel.ISupportInitialize)(this.gridEntryBindingSource)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.gridEntryBindingSource)).BeginInit();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.gridEntryDataGridView)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.gridEntryDataGridView)).BeginInit();
|
||||||
this.SuspendLayout();
|
this.SuspendLayout();
|
||||||
@ -76,6 +77,7 @@
|
|||||||
this.dataGridViewTextBoxColumn10,
|
this.dataGridViewTextBoxColumn10,
|
||||||
this.dataGridViewTextBoxColumn11,
|
this.dataGridViewTextBoxColumn11,
|
||||||
this.dataGridViewImageButtonBoxColumn2});
|
this.dataGridViewImageButtonBoxColumn2});
|
||||||
|
this.gridEntryDataGridView.ContextMenuStrip = this.contextMenuStrip1;
|
||||||
this.gridEntryDataGridView.DataSource = this.gridEntryBindingSource;
|
this.gridEntryDataGridView.DataSource = this.gridEntryBindingSource;
|
||||||
dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
|
dataGridViewCellStyle1.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
|
||||||
dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Window;
|
dataGridViewCellStyle1.BackColor = System.Drawing.SystemColors.Window;
|
||||||
@ -166,26 +168,26 @@
|
|||||||
this.dataGridViewTextBoxColumn7.Name = "dataGridViewTextBoxColumn7";
|
this.dataGridViewTextBoxColumn7.Name = "dataGridViewTextBoxColumn7";
|
||||||
this.dataGridViewTextBoxColumn7.ReadOnly = true;
|
this.dataGridViewTextBoxColumn7.ReadOnly = true;
|
||||||
//
|
//
|
||||||
// ProductRating
|
// dataGridViewTextBoxColumn8
|
||||||
//
|
//
|
||||||
this.dataGridViewTextBoxColumn8.DataPropertyName = "ProductRating";
|
this.dataGridViewTextBoxColumn8.DataPropertyName = "ProductRating";
|
||||||
this.dataGridViewTextBoxColumn8.HeaderText = "Product Rating";
|
this.dataGridViewTextBoxColumn8.HeaderText = "Product Rating";
|
||||||
this.dataGridViewTextBoxColumn8.Name = "ProductRating";
|
this.dataGridViewTextBoxColumn8.Name = "dataGridViewTextBoxColumn8";
|
||||||
this.dataGridViewTextBoxColumn8.ReadOnly = true;
|
this.dataGridViewTextBoxColumn8.ReadOnly = true;
|
||||||
this.dataGridViewTextBoxColumn8.Width = 108;
|
this.dataGridViewTextBoxColumn8.Width = 108;
|
||||||
//
|
//
|
||||||
// PurchaseDate
|
// dataGridViewTextBoxColumn9
|
||||||
//
|
//
|
||||||
this.dataGridViewTextBoxColumn9.DataPropertyName = "PurchaseDate";
|
this.dataGridViewTextBoxColumn9.DataPropertyName = "PurchaseDate";
|
||||||
this.dataGridViewTextBoxColumn9.HeaderText = "Purchase Date";
|
this.dataGridViewTextBoxColumn9.HeaderText = "Purchase Date";
|
||||||
this.dataGridViewTextBoxColumn9.Name = "PurchaseDate";
|
this.dataGridViewTextBoxColumn9.Name = "dataGridViewTextBoxColumn9";
|
||||||
this.dataGridViewTextBoxColumn9.ReadOnly = true;
|
this.dataGridViewTextBoxColumn9.ReadOnly = true;
|
||||||
//
|
//
|
||||||
// MyRating
|
// dataGridViewTextBoxColumn10
|
||||||
//
|
//
|
||||||
this.dataGridViewTextBoxColumn10.DataPropertyName = "MyRating";
|
this.dataGridViewTextBoxColumn10.DataPropertyName = "MyRating";
|
||||||
this.dataGridViewTextBoxColumn10.HeaderText = "My Rating";
|
this.dataGridViewTextBoxColumn10.HeaderText = "My Rating";
|
||||||
this.dataGridViewTextBoxColumn10.Name = "MyRating";
|
this.dataGridViewTextBoxColumn10.Name = "dataGridViewTextBoxColumn10";
|
||||||
this.dataGridViewTextBoxColumn10.ReadOnly = true;
|
this.dataGridViewTextBoxColumn10.ReadOnly = true;
|
||||||
this.dataGridViewTextBoxColumn10.Width = 108;
|
this.dataGridViewTextBoxColumn10.Width = 108;
|
||||||
//
|
//
|
||||||
@ -206,6 +208,11 @@
|
|||||||
this.dataGridViewImageButtonBoxColumn2.Resizable = System.Windows.Forms.DataGridViewTriState.False;
|
this.dataGridViewImageButtonBoxColumn2.Resizable = System.Windows.Forms.DataGridViewTriState.False;
|
||||||
this.dataGridViewImageButtonBoxColumn2.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
|
this.dataGridViewImageButtonBoxColumn2.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
|
||||||
//
|
//
|
||||||
|
// contextMenuStrip1
|
||||||
|
//
|
||||||
|
this.contextMenuStrip1.Name = "contextMenuStrip1";
|
||||||
|
this.contextMenuStrip1.Size = new System.Drawing.Size(181, 26);
|
||||||
|
//
|
||||||
// ProductsGrid
|
// ProductsGrid
|
||||||
//
|
//
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
|
this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 15F);
|
||||||
@ -238,5 +245,6 @@
|
|||||||
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn10;
|
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn10;
|
||||||
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn11;
|
private System.Windows.Forms.DataGridViewTextBoxColumn dataGridViewTextBoxColumn11;
|
||||||
private EditTagsDataGridViewImageButtonColumn dataGridViewImageButtonBoxColumn2;
|
private EditTagsDataGridViewImageButtonColumn dataGridViewImageButtonBoxColumn2;
|
||||||
|
private System.Windows.Forms.ContextMenuStrip contextMenuStrip1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -8,6 +8,7 @@ using Dinah.Core;
|
|||||||
using Dinah.Core.DataBinding;
|
using Dinah.Core.DataBinding;
|
||||||
using Dinah.Core.Threading;
|
using Dinah.Core.Threading;
|
||||||
using Dinah.Core.Windows.Forms;
|
using Dinah.Core.Windows.Forms;
|
||||||
|
using LibationFileManager;
|
||||||
using LibationWinForms.Dialogs;
|
using LibationWinForms.Dialogs;
|
||||||
|
|
||||||
namespace LibationWinForms
|
namespace LibationWinForms
|
||||||
@ -38,12 +39,61 @@ namespace LibationWinForms
|
|||||||
{
|
{
|
||||||
InitializeComponent();
|
InitializeComponent();
|
||||||
|
|
||||||
|
var hiddenGridEntries = Configuration.Instance.HiddenGridColumns;
|
||||||
|
|
||||||
|
contextMenuStrip1.Items.Add(new ToolStripLabel("Show / Hide Columns"));
|
||||||
|
contextMenuStrip1.Items.Add(new ToolStripSeparator());
|
||||||
|
|
||||||
|
foreach (DataGridViewColumn column in _dataGridView.Columns)
|
||||||
|
{
|
||||||
|
var visible = !hiddenGridEntries.Contains(column.DataPropertyName);
|
||||||
|
|
||||||
|
var itemName = column.DataPropertyName;
|
||||||
|
|
||||||
|
var menuItem = new ToolStripMenuItem()
|
||||||
|
{
|
||||||
|
Text = itemName,
|
||||||
|
Checked = visible,
|
||||||
|
Tag = itemName
|
||||||
|
};
|
||||||
|
menuItem.Click += HideMenuItem_Click;
|
||||||
|
contextMenuStrip1.Items.Add(menuItem);
|
||||||
|
|
||||||
|
column.Visible = visible;
|
||||||
|
}
|
||||||
|
|
||||||
// sorting breaks filters. must reapply filters after sorting
|
// sorting breaks filters. must reapply filters after sorting
|
||||||
_dataGridView.Sorted += Filter;
|
_dataGridView.Sorted += Filter;
|
||||||
_dataGridView.CellContentClick += DataGridView_CellContentClick;
|
_dataGridView.CellContentClick += DataGridView_CellContentClick;
|
||||||
|
|
||||||
EnableDoubleBuffering();
|
EnableDoubleBuffering();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void HideMenuItem_Click(object sender, EventArgs e)
|
||||||
|
{
|
||||||
|
var menuItem = sender as ToolStripMenuItem;
|
||||||
|
var propertyName = menuItem.Tag as string;
|
||||||
|
|
||||||
|
var column = _dataGridView.Columns.Cast<DataGridViewColumn>().FirstOrDefault(c => c.DataPropertyName == propertyName);
|
||||||
|
|
||||||
|
if (column != null)
|
||||||
|
{
|
||||||
|
var visible = menuItem.Checked;
|
||||||
|
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();
|
||||||
|
}
|
||||||
|
}
|
||||||
private void EnableDoubleBuffering()
|
private void EnableDoubleBuffering()
|
||||||
{
|
{
|
||||||
var propertyInfo = _dataGridView.GetType().GetProperty("DoubleBuffered", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
|
var propertyInfo = _dataGridView.GetType().GetProperty("DoubleBuffered", System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
|
||||||
@ -225,5 +275,6 @@ namespace LibationWinForms
|
|||||||
#region DataGridView Macro
|
#region DataGridView Macro
|
||||||
private GridEntry getGridEntry(int rowIndex) => _dataGridView.GetBoundItem<GridEntry>(rowIndex);
|
private GridEntry getGridEntry(int rowIndex) => _dataGridView.GetBoundItem<GridEntry>(rowIndex);
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -1,5 +1,4 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<root>
|
||||||
<root>
|
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
@ -61,4 +60,7 @@
|
|||||||
<metadata name="gridEntryBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
<metadata name="gridEntryBindingSource.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
<value>17, 17</value>
|
<value>17, 17</value>
|
||||||
</metadata>
|
</metadata>
|
||||||
|
<metadata name="contextMenuStrip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
|
||||||
|
<value>197, 17</value>
|
||||||
|
</metadata>
|
||||||
</root>
|
</root>
|
||||||
Loading…
x
Reference in New Issue
Block a user