QuoteDesignGrid.cs 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. using System;
  2. using System.Threading;
  3. using Comal.Classes;
  4. using InABox.Core;
  5. using InABox.DynamicGrid;
  6. using InABox.Wpf;
  7. namespace PRSDesktop
  8. {
  9. public class QuoteDesignGrid : DynamicDataGrid<QuoteDesign>, IMasterDetailControl<Quote,QuoteDesign>
  10. {
  11. protected override void DoReconfigure(DynamicGridOptions options)
  12. {
  13. base.DoReconfigure(options);
  14. options.RecordCount = true;
  15. options.SelectColumns = true;
  16. }
  17. public Quote? Master { get; set; }
  18. public Filter<QuoteDesign> MasterDetailFilter => Master != null && Master.ID != Guid.Empty
  19. ? new Filter<QuoteDesign>(x => x.Quote.ID).IsEqualTo(Master.ID)
  20. : new Filter<QuoteDesign>().None();
  21. protected override void Reload(
  22. Filters<QuoteDesign> criteria, Columns<QuoteDesign> columns, ref SortOrder<QuoteDesign>? sort,
  23. CancellationToken token, Action<CoreTable?, Exception?> action)
  24. {
  25. criteria.Add(MasterDetailFilter);
  26. base.Reload(criteria, columns, ref sort, token, action);
  27. }
  28. public override QuoteDesign CreateItem()
  29. {
  30. var result = base.CreateItem();
  31. result.Quote.ID = Master?.ID ?? Guid.Empty;
  32. result.Quote.Synchronise(Master ?? new Quote());
  33. return result;
  34. }
  35. }
  36. }