| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 | using System;using System.Collections.Generic;using System.Linq;using System.Windows.Data;using InABox.Core;using Syncfusion.UI.Xaml.Grid;using Syncfusion.UI.Xaml.TreeGrid;namespace InABox.DynamicGrid;public abstract class DynamicGridComboBoxColumn<TEntity, TEditor> : DynamicGridEditorColumn<TEntity, TEditor, GridComboBoxColumn, TreeGridComboBoxColumn>    where TEntity : BaseObject    where TEditor : class, ILookupEditor {    private List<Tuple<object?, string>> GetData(TEditor editor)    {        var keycol = Definition.ColumnName.Split('.').Last();        var data = editor.Values(typeof(TEntity), Definition.ColumnName, null);        var items = new List<Tuple<object?, string>>        {            new(null, "")        };        foreach (var row in data.Rows)            items.Add(new(row[keycol], (row["Display"] ?? "").ToString() ?? ""));        return items;    }    protected override void Configure(GridComboBoxColumn column, TEditor editor)    {        column.SelectedValuePath = "Item1";        column.DisplayMemberPath = "Item2";        column.ItemsSource = GetData(editor);        column.UpdateTrigger = UpdateSourceTrigger.PropertyChanged;    }    protected override void Configure(TreeGridComboBoxColumn column, TEditor editor)    {        column.SelectedValuePath = "Item1";        column.DisplayMemberPath = "Item2";        column.ItemsSource = GetData(editor);        column.UpdateTrigger = UpdateSourceTrigger.PropertyChanged;    }    protected DynamicGridComboBoxColumn(DynamicGridColumn definition) : base(definition)    {    }}
 |