DynamicGridFilterGrid.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  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 DoReconfigure(DynamicGridOptions options)
  33. {
  34. base.DoReconfigure(options);
  35. options.RecordCount = true;
  36. options.AddRows = true;
  37. options.EditRows = true;
  38. options.DeleteRows = true;
  39. options.MultiSelect = true;
  40. }
  41. private void DynamicGridFilterGrid_OnCustomiseEditor(IDynamicEditorForm sender, CoreFilterDefinition[]? items, DynamicGridColumn column, BaseEditor editor)
  42. {
  43. if(column.ColumnName == nameof(CoreFilterDefinition.Filter) && editor is FilterEditor filterEditor)
  44. {
  45. filterEditor.Type = FilterType;
  46. }
  47. }
  48. }
  49. }