|
@@ -559,16 +559,34 @@ public class DynamicGridGridUIComponent<T> : IDynamicGridUIComponent<T>, IDynami
|
|
|
if (e.FilterPredicates != null)
|
|
|
{
|
|
|
var filter = e.FilterPredicates.Select(x => x.FilterValue.ToString()!).ToArray();
|
|
|
- bool include = e.FilterPredicates.Any(x => x.FilterType == FilterType.Equals);
|
|
|
- column.SelectedFilters = include ? filter : (column.Filters ?? Enumerable.Empty<string>()).Except(filter).ToArray();
|
|
|
+ var include = e.FilterPredicates.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 = Array.Empty<string>();
|
|
|
- DataGrid.ClearFilter(e.Column);
|
|
|
+ {
|
|
|
+ column.SelectedFilters = null;
|
|
|
+ column.ExcludeFilters = null;
|
|
|
+ }
|
|
|
+ //DataGrid.ClearFilter(e.Column);
|
|
|
+
|
|
|
//e.FilterPredicates?.Clear();
|
|
|
//e.FilterPredicates?.Add(new FilterPredicate() { PredicateType = PredicateType.Or, FilterBehavior = Syncfusion.Data.FilterBehavior.StringTyped, FilterMode = ColumnFilter.DisplayText, FilterType = Syncfusion.Data.FilterType.NotEquals, FilterValue = "" });
|
|
|
//e.FilterPredicates?.Add(new FilterPredicate() { PredicateType = PredicateType.Or, FilterBehavior = Syncfusion.Data.FilterBehavior.StringTyped, FilterMode = ColumnFilter.DisplayText, FilterType = Syncfusion.Data.FilterType.Equals, FilterValue = "" });
|
|
|
- Parent.Refresh(false, false);
|
|
|
+ //Parent.Refresh(false, false);
|
|
|
e.Handled = true;
|
|
|
}
|
|
|
|
|
@@ -610,17 +628,20 @@ public class DynamicGridGridUIComponent<T> : IDynamicGridUIComponent<T>, IDynami
|
|
|
};
|
|
|
if(column is DynamicActionColumn dac)
|
|
|
{
|
|
|
- element.IsSelected = dac.SelectedFilters is null || dac.SelectedFilters.Contains(x);
|
|
|
+ element.IsSelected = (dac.SelectedFilters is null || dac.SelectedFilters.Contains(x))
|
|
|
+ && (dac.ExcludeFilters is null || !dac.ExcludeFilters.Contains(x));
|
|
|
}
|
|
|
return element;
|
|
|
});
|
|
|
}
|
|
|
else if (column is DynamicActionColumn dac && dac.Filters is not null)
|
|
|
{
|
|
|
- e.ItemsSource = dac.Filters.Select(x => new FilterElement {
|
|
|
+ e.ItemsSource = dac.Filters.Select(x => new FilterElement
|
|
|
+ {
|
|
|
DisplayText = x,
|
|
|
ActualValue = x,
|
|
|
- IsSelected = dac.SelectedFilters is null || dac.SelectedFilters.Contains(x)
|
|
|
+ IsSelected = (dac.SelectedFilters is null || dac.SelectedFilters.Contains(x))
|
|
|
+ && (dac.ExcludeFilters is null || !dac.ExcludeFilters.Contains(x))
|
|
|
});
|
|
|
}
|
|
|
}
|
|
@@ -668,9 +689,16 @@ public class DynamicGridGridUIComponent<T> : IDynamicGridUIComponent<T>, IDynami
|
|
|
list.Add(new(gridColumn.ColumnName, rowPredicate));
|
|
|
}
|
|
|
}
|
|
|
- else if(col is DynamicActionColumn dac && dac.FilterRecord is not null && dac.SelectedFilters is not null && dac.SelectedFilters.Length > 0)
|
|
|
+ else if(col is DynamicActionColumn dac && dac.FilterRecord is not null)
|
|
|
{
|
|
|
- list.Add(new(column.MappingName, (row) => dac.FilterRecord(row, dac.SelectedFilters)));
|
|
|
+ if(dac.SelectedFilters is not null && dac.SelectedFilters.Length > 0)
|
|
|
+ {
|
|
|
+ list.Add(new(column.MappingName, (row) => dac.FilterRecord(row, dac.SelectedFilters)));
|
|
|
+ }
|
|
|
+ if(dac.ExcludeFilters is not null && dac.ExcludeFilters.Length > 0)
|
|
|
+ {
|
|
|
+ list.Add(new(column.MappingName, (row) => !dac.FilterRecord(row, dac.ExcludeFilters)));
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
return list;
|
|
@@ -923,7 +951,7 @@ public class DynamicGridGridUIComponent<T> : IDynamicGridUIComponent<T>, IDynami
|
|
|
newcol.Width = column.Width;
|
|
|
newcol.ColumnSizer = GridLengthUnitType.None;
|
|
|
newcol.HeaderText = column.HeaderText;
|
|
|
- newcol.AllowFiltering = column.Filters != null && column.Filters.Length != 0;
|
|
|
+ newcol.AllowFiltering = (column.Filters != null && column.Filters.Length != 0) || column.FilterRecord is not null;
|
|
|
newcol.AllowSorting = false;
|
|
|
newcol.FilterRowOptionsVisibility = Visibility.Collapsed;
|
|
|
newcol.ShowHeaderToolTip = column.ToolTip != null;
|