QuoteCostSheetsGrid.cs 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. using System;
  2. using System.Linq;
  3. using Comal.Classes;
  4. using InABox.Core;
  5. using InABox.DynamicGrid;
  6. namespace PRSDesktop
  7. {
  8. public class QuoteCostSheetGrid : DynamicDataGrid<QuoteCostSheet>
  9. {
  10. public QuoteCostSheetGrid()
  11. {
  12. OnCustomiseEditor += CustomiseEditor;
  13. HiddenColumns.Add(x => x.CostSheet.ID);
  14. HiddenColumns.Add(x => x.CostSheet.Deleted);
  15. }
  16. protected override void DoReconfigure(FluentList<DynamicGridOption> options)
  17. {
  18. base.DoReconfigure(options);
  19. options.AddRange(DynamicGridOption.RecordCount, DynamicGridOption.SelectColumns);
  20. }
  21. protected override void GenerateColumns(DynamicGridColumns columns)
  22. {
  23. columns.Add<QuoteCostSheet, String>(x => x.Description, 0, "Description", "", Alignment.MiddleCenter);
  24. }
  25. public Quote Quote { get; set; }
  26. private void CustomiseEditor(IDynamicEditorForm sender, QuoteCostSheet[]? items, DynamicGridColumn column, BaseEditor editor)
  27. {
  28. if (column.ColumnName.Equals("CostSheet.ID"))
  29. editor.Editable = items?.FirstOrDefault()?.CostSheet.IsValid() != true ? Editable.Enabled : Editable.Disabled;
  30. }
  31. protected override void Reload(Filters<QuoteCostSheet> criteria, Columns<QuoteCostSheet> columns, ref SortOrder<QuoteCostSheet> sort,
  32. Action<CoreTable?, Exception?> action)
  33. {
  34. criteria.Add(new Filter<QuoteCostSheet>(x => x.Quote.ID).IsEqualTo(Quote.ID));
  35. base.Reload(criteria, columns, ref sort, action);
  36. }
  37. protected override QuoteCostSheet CreateItem()
  38. {
  39. var result = base.CreateItem();
  40. result.Quote.ID = Quote.ID;
  41. result.Quote.Synchronise(Quote);
  42. return result;
  43. }
  44. }
  45. }