Pārlūkot izejas kodu

The Add button on DynamicColumnGrid now opens the tree grid

Kenric Nugteren 7 mēneši atpakaļ
vecāks
revīzija
196171be15

+ 21 - 5
inabox.wpf/DynamicGrid/DynamicGridColumn/DynamicColumnGrid.cs

@@ -48,6 +48,27 @@ internal class DynamicColumnGrid : DynamicGrid<DynamicGridColumn>
         return true;
         return true;
     }
     }
 
 
+    protected override void DoAdd(bool openEditorOnDirectEdit = false)
+    {
+        if(DynamicGridColumnNameSelectorGrid.SelectColumnName(ProcessColumns().Select(x => x.ColumnName).ToArray(), out var column))
+        {
+            var item = CreateItem();
+            var prop = DatabaseSchema.Property(Type, column);
+            item.ColumnName = column;
+            if(prop is not null)
+            {
+                item.Width = prop.Editor.Width;
+                item.Alignment = prop.Editor.Alignment;
+                item.Format = prop.Editor.Format;
+                item.Editor = prop.Editor.CloneEditor();
+                item.Caption = prop.Caption;
+            }
+            SaveItem(item);
+            DoChanged();
+            Refresh(false, true);
+        }
+    }
+
     protected override void DoValidate(DynamicGridColumn[] items, List<string> errors)
     protected override void DoValidate(DynamicGridColumn[] items, List<string> errors)
     {
     {
         base.DoValidate(items, errors);
         base.DoValidate(items, errors);
@@ -80,11 +101,6 @@ internal class DynamicColumnGrid : DynamicGrid<DynamicGridColumn>
         return changes;
         return changes;
     }
     }
 
 
-    protected override void CustomiseEditor(DynamicGridColumn[] items, DynamicGridColumn column, BaseEditor editor)
-    {
-        base.CustomiseEditor(items, column, editor);
-    }
-
     private IEnumerable<DynamicGridColumn> ProcessColumns()
     private IEnumerable<DynamicGridColumn> ProcessColumns()
     {
     {
         var result = new List<DynamicGridColumn>();
         var result = new List<DynamicGridColumn>();

+ 4 - 16
inabox.wpf/DynamicGrid/DynamicGridColumn/DynamicColumnNameEditorControl.cs

@@ -65,23 +65,11 @@ public class DynamicColumnNameEditorControl : DynamicEditorControl<string, Dynam
 
 
     private void EditButton_Click(object sender, RoutedEventArgs e)
     private void EditButton_Click(object sender, RoutedEventArgs e)
     {
     {
-        var grid = new DynamicGridColumnNameSelectorGrid(ColumnNames);
-        grid.Refresh(true, true);
-
-        var window = new DynamicContentDialog(grid)
-        {
-            Title = "Select Column"
-        };
-        window.Bind(DynamicContentDialog.CanSaveProperty, grid, x => x.CanSave);
-        if(window.ShowDialog() == true && grid.SelectedRows.FirstOrDefault() is CoreRow row)
+        if(DynamicGridColumnNameSelectorGrid.SelectColumnName(ColumnNames, out var value))
         {
         {
-            var item = grid.LoadItem(row);
-            if (!item.IsParent)
-            {
-                Value = item.ColumnName;
-                TextBox.Text = Value;
-                CheckChanged();
-            }
+            Value = value;
+            TextBox.Text = Value;
+            CheckChanged();
         }
         }
     }
     }
 
 

+ 23 - 0
inabox.wpf/DynamicGrid/DynamicGridColumn/DynamicGridColumnNameSelectorWindow.cs

@@ -163,6 +163,29 @@ public class DynamicGridColumnNameSelectorGrid : DynamicItemsListGrid<DynamicGri
     {
     {
         PropertyChanged?.Invoke(this, new(propertyName));
         PropertyChanged?.Invoke(this, new(propertyName));
     }
     }
+
+    public static bool SelectColumnName(string[] columnNames, out string value)
+    {
+        var grid = new DynamicGridColumnNameSelectorGrid(columnNames);
+        grid.Refresh(true, true);
+
+        var window = new DynamicContentDialog(grid)
+        {
+            Title = "Select Column"
+        };
+        window.Bind(DynamicContentDialog.CanSaveProperty, grid, x => x.CanSave);
+        if(window.ShowDialog() == true && grid.SelectedRows.FirstOrDefault() is CoreRow row)
+        {
+            var item = grid.LoadItem(row);
+            if (!item.IsParent)
+            {
+                value = item.ColumnName;
+                return true;
+            }
+        }
+        value = "";
+        return false;
+    }
 }
 }
 
 
 public class DynamicGridColumnNameSelectorItem : BaseObject
 public class DynamicGridColumnNameSelectorItem : BaseObject