using System; using System.Collections.Generic; using System.Linq; using System.Threading; using InABox.Clients; using InABox.Core; namespace InABox.DynamicGrid { public class FormControlGrid : DynamicGrid where T : DFLayoutControl, new() { public FormControlGrid() { Items = new List(); } protected override void DoReconfigure(DynamicGridOptions options) { base.DoReconfigure(options); options.RecordCount = true; } public List Items { get; set; } public override void DeleteItems(params CoreRow[] rows) { var items = new List(); foreach (var row in rows) items.Add(Items[row.Index]); Items.RemoveAll(x => items.Contains(x)); } public override T LoadItem(CoreRow row) { return Items[row.Index]; } protected override void Reload( Filters criteria, Columns columns, ref SortOrder? sort, CancellationToken token, Action action) { var table = new CoreTable(); table.LoadColumns(typeof(T)); table.LoadRows(Items.OrderBy(x => x.Sequence)); action?.Invoke(table, null); } public override void SaveItem(T item) { if (!Items.Contains(item)) Items.Add(item); } } }