QuoteContractGrid.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  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 QuoteContractGrid : DynamicDataGrid<QuoteContract>, IMasterDetailControl<Quote,QuoteContract>
  10. {
  11. public Quote? Master { get; set; }
  12. public QuoteContractGrid() : base()
  13. {
  14. HiddenColumns.Add(x=>x.Quote.ID);
  15. }
  16. public Filter<QuoteContract> MasterDetailFilter => Master != null & Master.ID != Guid.Empty
  17. ? new Filter<QuoteContract>(x => x.Quote.ID).IsEqualTo(Master.ID)
  18. : new Filter<QuoteContract>().None();
  19. protected override void DoReconfigure(DynamicGridOptions options)
  20. {
  21. base.DoReconfigure(options);
  22. options.RecordCount = true;
  23. options.SelectColumns = true;
  24. }
  25. protected override void Reload(
  26. Filters<QuoteContract> criteria, Columns<QuoteContract> columns, ref SortOrder<QuoteContract>? sort,
  27. CancellationToken token, Action<CoreTable?, Exception?> action)
  28. {
  29. criteria.Add(MasterDetailFilter);
  30. base.Reload(criteria, columns, ref sort, token, action);
  31. }
  32. protected override bool CanCreateItems()
  33. {
  34. return base.CanCreateItems() && (Master?.ID ?? Guid.Empty) != Guid.Empty;
  35. }
  36. public override QuoteContract CreateItem()
  37. {
  38. var result = base.CreateItem();
  39. result.Quote.ID = Master?.ID ?? Guid.Empty;
  40. result.Quote.Synchronise(Master ?? new Quote());
  41. return result;
  42. }
  43. }
  44. }