QuoteContractProposalGrid.cs 1.5 KB

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