using InABox.Core; using System; using System.Collections; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Microsoft.CodeAnalysis.CSharp.Syntax; using Syncfusion.Windows.Tools.Controls; using System.Threading; namespace InABox.DynamicGrid; public interface IDynamicItemsListGrid : IDynamicGrid { /// /// The items list that forms the source for the rows of this grid /// /// /// Note: This must be a list of type , otherwise the assignment to this property will not work. /// IList Items { get; set; } } public class DynamicItemsListGrid : DynamicGrid, IDynamicItemsListGrid where T : BaseObject, new() { private List _items = []; public List Items { get => _items; set => _items = value; } IList IDynamicItemsListGrid.Items { get => _items; set => _items = value as List ?? new List(); } protected override void Init() { } protected override void DoReconfigure(DynamicGridOptions options) { } public override void DeleteItems(params CoreRow[] rows) { foreach (var row in rows.OrderByDescending(x => x.Index)) { Items.RemoveAt(_recordmap[row].Index); } } public override T LoadItem(CoreRow row) { return Items[_recordmap[row].Index]; } protected override void Reload( Filters criteria, Columns columns, ref SortOrder? sort, CancellationToken token, Action action) { var result = new CoreTable(); result.LoadColumns(columns); result.LoadRows(Items); action.Invoke(result, null); } public override void SaveItem(T item) { if (!Items.Contains(item)) { Items.Add(item); } } }