Forráskód Böngészése

Added EditEntity override that takes an ID instead of an object.

Kenric Nugteren 5 hónapja
szülő
commit
724678268b
1 módosított fájl, 16 hozzáadás és 0 törlés
  1. 16 0
      inabox.wpf/DynamicGrid/DynamicGridUtils.cs

+ 16 - 0
inabox.wpf/DynamicGrid/DynamicGridUtils.cs

@@ -683,6 +683,22 @@ public static class DynamicGridUtils
         return grid.EditItems(items, PageDataHandler: pageDataHandler, PreloadPages: preloadPages);
     }
 
+    /// <summary>
+    /// Edit (using a grid sourced with <see cref="CreateDynamicGrid{T}(Type)"/>) a <typeparamref name="T"/>, by loading it from the database.
+    /// </summary>
+    public static bool EditEntity<T>(Guid id, Func<Type, CoreTable?>? pageDataHandler = null, bool preloadPages = false, Action<DynamicGrid<T>>? customiseGrid = null)
+        where T : Entity, IRemotable, IPersistent, new()
+    {
+        var grid = (CreateDynamicGrid<T>(typeof(DynamicDataGrid<>)) as DynamicDataGrid<T>)!;
+        customiseGrid?.Invoke(grid);
+        var item = Client.Query<T>(
+            new Filter<T>(x => x.ID).IsEqualTo(id),
+            grid.LoadEditorColumns())
+            .ToObjects<T>().FirstOrDefault();
+        if (item is null) return false;
+        return grid.EditItems(new T[] { item }, PageDataHandler: pageDataHandler, PreloadPages: preloadPages);
+    }
+
     #endregion
 
     #region Drag + Drop