RequisitionItemStockHoldingSelectionGrid.cs 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. using Comal.Classes;
  2. using InABox.Core;
  3. using InABox.DynamicGrid;
  4. using System;
  5. using System.Collections.Generic;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading;
  9. using System.Threading.Tasks;
  10. namespace PRSDesktop.Panels.Requisitions;
  11. public class RequisitionItemStockHoldingSelectionGrid : DynamicDataGrid<StockHolding>, ISpecificGrid
  12. {
  13. public Product? Product { get; set; }
  14. protected override void Init()
  15. {
  16. base.Init();
  17. ColumnsTag = nameof(RequisitionItemStockHoldingSelectionGrid);
  18. }
  19. protected override void DoReconfigure(DynamicGridOptions options)
  20. {
  21. base.DoReconfigure(options);
  22. options.Clear();
  23. options.SelectColumns = true;
  24. }
  25. public override DynamicGridColumns GenerateColumns()
  26. {
  27. var columns = new DynamicGridColumns();
  28. columns.Add<StockHolding, string>(x => x.Location.Description, 0, "Location", "", Alignment.MiddleLeft);
  29. columns.Add<StockHolding, string>(x => x.Job.JobNumber, 120, "Job No.", "", Alignment.MiddleLeft);
  30. columns.Add<StockHolding, string>(x => x.Style.Description, 0, "Style", "", Alignment.MiddleLeft);
  31. columns.Add<StockHolding, double>(x => x.Units, 70, "Units", "F2", Alignment.MiddleRight);
  32. columns.Add<StockHolding, string>(x => x.Dimensions.UnitSize, 0, "Size", "", Alignment.MiddleLeft);
  33. return columns;
  34. }
  35. protected override void Reload(
  36. Filters<StockHolding> criteria, Columns<StockHolding> columns, ref SortOrder<StockHolding>? sort,
  37. CancellationToken token, Action<CoreTable?, Exception?> action)
  38. {
  39. if(Product is not null)
  40. {
  41. criteria.Add(new Filter<StockHolding>(x => x.Product.ID).IsEqualTo(Product.ID));
  42. }
  43. else
  44. {
  45. criteria.Add(new Filter<StockHolding>().None());
  46. }
  47. base.Reload(criteria, columns, ref sort, token, action);
  48. }
  49. }