QuoteProposalCostSheetGrid.cs 1.6 KB

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