QuoteContractGrid.cs 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. using System;
  2. using Comal.Classes;
  3. using InABox.Core;
  4. using InABox.DynamicGrid;
  5. using InABox.Wpf;
  6. namespace PRSDesktop
  7. {
  8. public class QuoteContractGrid : DynamicDataGrid<QuoteContract>, IMasterDetailControl<Quote,QuoteContract>
  9. {
  10. public Quote? Master { get; set; }
  11. public Filter<QuoteContract> MasterDetailFilter => Master != null & Master.ID != Guid.Empty
  12. ? new Filter<QuoteContract>(x => x.Quote.ID).IsEqualTo(Master.ID)
  13. : new Filter<QuoteContract>().None();
  14. protected override void DoReconfigure(FluentList<DynamicGridOption> options)
  15. {
  16. base.DoReconfigure(options);
  17. options.AddRange(DynamicGridOption.RecordCount, DynamicGridOption.SelectColumns);
  18. }
  19. protected override void Reload(Filters<QuoteContract> criteria, Columns<QuoteContract> columns, ref SortOrder<QuoteContract>? sort, Action<CoreTable?, Exception?> action)
  20. {
  21. criteria.Add(MasterDetailFilter);
  22. base.Reload(criteria, columns, ref sort, action);
  23. }
  24. protected override bool CanCreateItems()
  25. {
  26. return base.CanCreateItems() && (Master?.ID ?? Guid.Empty) != Guid.Empty;
  27. }
  28. public override QuoteContract 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. }