Browse Source

DYNAMIC GRID - added double click to select in popup box

Nick-PRSDigital@bitbucket.org 2 years ago
parent
commit
1c6ff8f22e

+ 1 - 0
InABox.DynamicGrid/BaseDynamicGrid.cs

@@ -60,6 +60,7 @@ namespace InABox.DynamicGrid
         public event OnCreateItem? OnCreateItem;
         public abstract event OnCustomiseEditor<T>? OnCustomiseEditor;
         public abstract event OnCustomiseColumns? OnCustomiseColumns;
+        public abstract event OnDoubleClick? OnDoubleClick;
 
         public OnGetDynamicGridStyle? OnGetStyle { get; set; }
 

+ 3 - 3
InABox.DynamicGrid/DynamicGrid.cs

@@ -367,9 +367,7 @@ namespace InABox.DynamicGrid
 
         #region Events
 
-        public event SelectItemHandler? OnSelectItem;
-
-        public event OnDoubleClick? OnDoubleClick;
+        public event SelectItemHandler? OnSelectItem;       
 
         public event OnCellDoubleClick? OnCellDoubleClick;
 
@@ -383,6 +381,8 @@ namespace InABox.DynamicGrid
 
         public override event OnFilterRecord? OnFilterRecord;
 
+        public override event OnDoubleClick? OnDoubleClick;
+
         #endregion
 
         public DynamicGrid() : base()

+ 23 - 13
InABox.DynamicGrid/Editors/PopupList.xaml.cs

@@ -3,6 +3,7 @@ using System.Collections.Generic;
 using System.Linq;
 using System.Windows;
 using System.Windows.Controls;
+using System.Windows.Input;
 using InABox.Core;
 using InABox.Wpf;
 
@@ -106,33 +107,42 @@ namespace InABox.DynamicGrid
 
             _grid.SelectedRows = _grid.Data.Rows.Where(r => r.Get<Guid>("ID").Equals(ID)).ToArray();
 
+            _grid.OnDoubleClick += Grid_OnDoubleClick;
+            
             //Left = screen.DeviceBounds.Left + ((screen.DeviceBounds.Width - Width) / 2.0F);
             //Top = screen.DeviceBounds.Top + ((screen.DeviceBounds.Height - Height) / 2.0F);
             //WpfScreen.CenterWindowOnScreen(this);
         }
 
+        private void Grid_OnDoubleClick(object sender, System.ComponentModel.HandledEventArgs args)
+        {
+            if (_grid.SelectedRows.Any())
+                CheckSelectedAndClose();
+        }
 
         private void OKButton_Click(object sender, RoutedEventArgs e)
         {
             if (_grid.SelectedRows.Any())
-            {
-                ID = _grid.SelectedRows.First().Get<Guid>("ID");
+                CheckSelectedAndClose();
+            else
+                MessageBox.Show("Please select an Item first");
 
-                //AsLookup = _grid.SelectedRows.First().Get<String>("AsLookup");
+        }
 
-                foreach (var key in OtherValues.Keys.ToArray())
-                {
-                    var comps = key.Split(new[] { "->" }, StringSplitOptions.None);
-                    OtherValues[key] = _grid.SelectedRows.First().Get<object>(comps.First());
-                }
+        private void CheckSelectedAndClose()
+        {
+            ID = _grid.SelectedRows.First().Get<Guid>("ID");
 
-                DialogResult = true;
-                Close();
-            }
-            else
+            //AsLookup = _grid.SelectedRows.First().Get<String>("AsLookup");
+
+            foreach (var key in OtherValues.Keys.ToArray())
             {
-                MessageBox.Show("Please select an Item first");
+                var comps = key.Split(new[] { "->" }, StringSplitOptions.None);
+                OtherValues[key] = _grid.SelectedRows.First().Get<object>(comps.First());
             }
+
+            DialogResult = true;
+            Close();
         }
 
         private void CancelButton_Click(object sender, RoutedEventArgs e)

+ 2 - 0
InABox.DynamicGrid/IDynamicGrid.cs

@@ -33,6 +33,8 @@ namespace InABox.DynamicGrid
         event OnFilterRecord OnFilterRecord;
         event OnCreateItem OnCreateItem;
 
+        event OnDoubleClick? OnDoubleClick;
+
         void AddVisualFilter(string column, string value);
 
         event OnDefineFilter OnDefineFilter;