QuoteDesignItemGrid.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. using System;
  2. using System.Linq;
  3. using System.Threading;
  4. using Comal.Classes;
  5. using InABox.Core;
  6. using InABox.DynamicGrid;
  7. using InABox.Wpf;
  8. namespace PRSDesktop;
  9. public class QuoteDesignItemGrid : DynamicDataGrid<QuoteDesignItem>, IMasterDetailControl<QuoteDesign,QuoteDesignItem>
  10. {
  11. public QuoteDesign? Master { get; set; }
  12. public Filter<QuoteDesignItem> MasterDetailFilter => Master != null && Master.ID != Guid.Empty
  13. ? new Filter<QuoteDesignItem>(x => x.Design.ID).IsEqualTo(Master.ID)
  14. : new Filter<QuoteDesignItem>().None();
  15. public QuoteDesignItemGrid()
  16. {
  17. HiddenColumns.Add(x => x.Design.ID);
  18. HiddenColumns.Add(x => x.Design.Quote.ID);
  19. }
  20. protected override void DoReconfigure(DynamicGridOptions options)
  21. {
  22. base.DoReconfigure(options);
  23. options.RecordCount = true;
  24. options.SelectColumns = true;
  25. }
  26. protected override void Reload(
  27. Filters<QuoteDesignItem> criteria, Columns<QuoteDesignItem> columns, ref SortOrder<QuoteDesignItem>? sort,
  28. CancellationToken token, Action<CoreTable?, Exception?> action)
  29. {
  30. criteria.Add(MasterDetailFilter);
  31. base.Reload(criteria, columns, ref sort, token, action);
  32. }
  33. public override QuoteDesignItem CreateItem()
  34. {
  35. var result = base.CreateItem();
  36. result.Design.ID = Master?.ID ?? Guid.Empty;
  37. result.Design.Synchronise(Master ?? new QuoteDesign());
  38. return result;
  39. }
  40. // protected override IFilter? GetFilter()
  41. // {
  42. // var ids = CurrentGuids();
  43. // if (ids.Any())
  44. // return new Filter<QuoteTakeoff>(x => x.Quote.ID).IsEqualTo(Design.Quote.ID).And(x => x.ID).NotInList(CurrentGuids());
  45. // return new Filter<QuoteTakeoff>(x => x.Quote.ID).IsEqualTo(Design.Quote.ID);
  46. // }
  47. }