فهرست منبع

Added function to automatically load data for GenerateColumns from the MasterColumns list.

Kenric Nugteren 8 ماه پیش
والد
کامیت
a9f4ac957a
2فایلهای تغییر یافته به همراه29 افزوده شده و 9 حذف شده
  1. 10 0
      InABox.Core/CoreUtils.cs
  2. 19 9
      inabox.wpf/DynamicGrid/DynamicGrid.cs

+ 10 - 0
InABox.Core/CoreUtils.cs

@@ -2726,6 +2726,16 @@ namespace InABox.Core
             return to;
         }
 
+        public static List<U> ToList<T, U>(this IList<T> from, Func<T, U> mapFunc)
+        {
+            var to = new List<U>(from.Count);
+            for(int i = 0; i < from.Count; ++i)
+            {
+                to.Add(mapFunc(from[i]));
+            }
+            return to;
+        }
+
         /// <summary>
         /// Concatenate <paramref name="arr1"/> with <paramref name="arr2"/>, returning a new array.
         /// </summary>

+ 19 - 9
inabox.wpf/DynamicGrid/DynamicGrid.cs

@@ -893,25 +893,35 @@ public abstract class DynamicGrid<T> : DynamicGrid, IDynamicGridUIComponentParen
         return GenerateColumns();
     }
 
+    /// <summary>
+    /// Create a set of <see cref="DynamicGridColumns"/> according to the natural default sizes and formats and captions, based on the contents of <paramref name="columns"/>.
+    /// </summary>
+    /// <param name="columns"></param>
+    /// <returns></returns>
+    protected DynamicGridColumns ExtractColumns(Columns<T> columns)
+    {
+        var cols = new DynamicGridColumns();
+
+        foreach (var col in columns)
+        {
+            var mc = MasterColumns.FirstOrDefault(x => x.ColumnName.Equals(col.Property));
+            if (mc != null && mc.Editor is not NullEditor && mc.Editor.Visible != Visible.Hidden)
+                cols.Add(mc);
+        }
+
+        return cols;
+    }
 
     /// <summary>
     /// Provide a set of columns which is the default for this grid.
     /// </summary>
     public virtual DynamicGridColumns GenerateColumns()
     {
-        var columns = new DynamicGridColumns();
-
         var cols = IsDirectEditMode()
             ? new Columns<T>(ColumnTypeFlags.IncludeVisible | ColumnTypeFlags.IncludeForeignKeys)
             : new Columns<T>(ColumnTypeFlags.IncludeVisible | ColumnTypeFlags.IncludeLinked);
 
-        foreach (var col in cols)
-        {
-            var mc = MasterColumns.FirstOrDefault(x => x.ColumnName.Equals(col.Property));
-            if (mc != null && mc.Editor is not NullEditor && mc.Editor.Visible != Visible.Hidden)
-                columns.Add(mc);
-        }
-        return columns;
+        return ExtractColumns(cols);
     }
 
     private bool SwapRows(int row1, int row2)