DynamicGridFilterGrid.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. using InABox.Core;
  2. using InABox.Wpf;
  3. using System;
  4. using System.Collections.Generic;
  5. using System.Diagnostics.CodeAnalysis;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Threading;
  9. using System.Threading.Tasks;
  10. namespace InABox.DynamicGrid
  11. {
  12. public class DynamicGridFilterGrid : DynamicItemsListGrid<CoreFilterDefinition>
  13. {
  14. private CoreFilterDefinitions _filters;
  15. public CoreFilterDefinitions Filters
  16. {
  17. get => _filters;
  18. [MemberNotNull(nameof(_filters))]
  19. set
  20. {
  21. _filters = value;
  22. Items = value;
  23. }
  24. }
  25. private Type FilterType;
  26. public DynamicGridFilterGrid(Type filterType)
  27. {
  28. Filters = new CoreFilterDefinitions();
  29. FilterType = filterType;
  30. OnCustomiseEditor += DynamicGridFilterGrid_OnCustomiseEditor;
  31. }
  32. protected override void Init()
  33. {
  34. }
  35. protected override void DoReconfigure(DynamicGridOptions options)
  36. {
  37. options.RecordCount = true;
  38. options.AddRows = true;
  39. options.EditRows = true;
  40. options.DeleteRows = true;
  41. options.MultiSelect = true;
  42. }
  43. private void DynamicGridFilterGrid_OnCustomiseEditor(IDynamicEditorForm sender, CoreFilterDefinition[]? items, DynamicGridColumn column, BaseEditor editor)
  44. {
  45. if(column.ColumnName == nameof(CoreFilterDefinition.Filter) && editor is FilterEditor filterEditor)
  46. {
  47. filterEditor.Type = FilterType;
  48. }
  49. }
  50. }
  51. }