| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 | 
							- using System;
 
- using System.Collections.Generic;
 
- using System.Data;
 
- using System.Linq;
 
- using Syncfusion.Data;
 
- namespace InABox.DynamicGrid;
 
- public static class IDynamicGridUIComponentExtensions
 
- {
 
-     public static string CreateFilterExpression(this DynamicActionColumn column, string propertyName)
 
-     {
 
-         List<string> criteria = new();
 
-         
 
-         var sel = column.SelectedFilters ?? [];
 
-         var exc = column.ExcludeFilters ?? [];
 
-         if (sel.Any())
 
-         {
 
-             var sels = String.Join(", ",sel.Select(x => $"'{x}'"));
 
-             criteria.Add($"{propertyName} IN ({sels})");
 
-         }
 
-         
 
-         if (exc.Any())
 
-         {
 
-             var excs = String.Join(", ",exc.Select(x => $"'{x}'"));
 
-             criteria.Add($"{propertyName} NOT IN ({excs})");
 
-         }
 
-     
 
-         if (criteria.Any())
 
-             return $"{string.Join(" AND ", criteria)}";
 
-         return "true";
 
-     }
 
-     
 
-     public static void SetFilters(this DynamicActionColumn column, IEnumerable<FilterPredicate>? predicates)
 
-     {
 
-         if (predicates != null)
 
-         {
 
-             var filter = predicates.Select(x => x.FilterValue.ToString()!).ToArray();
 
-             var include = predicates.Any(x => x.FilterType == FilterType.Equals);
 
-             if (include)
 
-             {
 
-                 column.SelectedFilters = filter;
 
-                 column.ExcludeFilters = null;
 
-             }
 
-             else if(column.Filters is not null)
 
-             {
 
-                 column.SelectedFilters = column.Filters.Except(filter).ToArray();
 
-                 column.ExcludeFilters = null;
 
-             }
 
-             else
 
-             {
 
-                 column.SelectedFilters = null;
 
-                 column.ExcludeFilters = filter;
 
-             }
 
-         }
 
-         else
 
-         {
 
-             column.SelectedFilters = null;
 
-             column.ExcludeFilters = null;
 
-         }
 
-     }
 
-     
 
-     public static void ApplyFilters(this DataView? view, IEnumerable<DynamicActionColumn> columns)
 
-     {
 
-         List<String> criteria = new();
 
-         foreach (var column in columns)
 
-             criteria.Add(column.GetFilterExpression?.Invoke(column) ?? "");
 
-         var filter = string.Join(" AND ", criteria.Where(x => !string.IsNullOrWhiteSpace(x)));
 
-         if (view != null)
 
-         {
 
-             view.RowStateFilter = DataViewRowState.CurrentRows;
 
-             view.RowFilter = filter;
 
-             if (view.Count == 0)
 
-                 view.RowStateFilter = DataViewRowState.None;
 
-         }
 
-     }
 
-     
 
- }
 
 
  |