|
@@ -46,8 +46,7 @@ public class DynamicGridGridUIComponent<T> : IDynamicGridUIComponent<T>, IDynami
|
|
where T : BaseObject, new()
|
|
where T : BaseObject, new()
|
|
{
|
|
{
|
|
private readonly Dictionary<string, string> _filterpredicates = new();
|
|
private readonly Dictionary<string, string> _filterpredicates = new();
|
|
-
|
|
|
|
-
|
|
|
|
|
|
+
|
|
private Dictionary<string, CoreTable> Lookups = new();
|
|
private Dictionary<string, CoreTable> Lookups = new();
|
|
|
|
|
|
private IDynamicGridUIComponentParent<T> _parent;
|
|
private IDynamicGridUIComponentParent<T> _parent;
|
|
@@ -194,6 +193,8 @@ public class DynamicGridGridUIComponent<T> : IDynamicGridUIComponent<T>, IDynami
|
|
|
|
|
|
DataGrid.SetValue(ScrollViewer.VerticalScrollBarVisibilityProperty, ScrollBarVisibility.Visible);
|
|
DataGrid.SetValue(ScrollViewer.VerticalScrollBarVisibilityProperty, ScrollBarVisibility.Visible);
|
|
|
|
|
|
|
|
+ DataGrid.FilterChanging += DataGrid_FilterChanging;
|
|
|
|
+
|
|
DataGrid.FilterChanged += DataGrid_FilterChanged;
|
|
DataGrid.FilterChanged += DataGrid_FilterChanged;
|
|
|
|
|
|
DataGrid.FilterItemsPopulating += DataGrid_FilterItemsPopulating;
|
|
DataGrid.FilterItemsPopulating += DataGrid_FilterItemsPopulating;
|
|
@@ -214,6 +215,8 @@ public class DynamicGridGridUIComponent<T> : IDynamicGridUIComponent<T>, IDynami
|
|
//DataGrid.CellRenderers.Add("TextBox", new CustomTextCellRenderer(this));
|
|
//DataGrid.CellRenderers.Add("TextBox", new CustomTextCellRenderer(this));
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
|
|
+
|
|
public class GridSelectionControllerExt(SfDataGrid datagrid, DynamicGridGridUIComponent<T> grid) : GridSelectionController(datagrid)
|
|
public class GridSelectionControllerExt(SfDataGrid datagrid, DynamicGridGridUIComponent<T> grid) : GridSelectionController(datagrid)
|
|
{
|
|
{
|
|
private DynamicGridGridUIComponent<T> Grid = grid;
|
|
private DynamicGridGridUIComponent<T> Grid = grid;
|
|
@@ -573,43 +576,27 @@ public class DynamicGridGridUIComponent<T> : IDynamicGridUIComponent<T>, IDynami
|
|
|
|
|
|
return reloadColumns && DataGrid.Columns.Count > 0;
|
|
return reloadColumns && DataGrid.Columns.Count > 0;
|
|
}
|
|
}
|
|
-
|
|
|
|
|
|
+
|
|
|
|
+ private void DataGrid_FilterChanging(object? sender, GridFilterEventArgs e)
|
|
|
|
+ {
|
|
|
|
+
|
|
|
|
+ var col = GetColumn(DataGrid.Columns.IndexOf(e.Column)) as DynamicActionColumn;
|
|
|
|
+ if (col?.GetFilterExpression != null)
|
|
|
|
+ {
|
|
|
|
+ col.SetFilters(e.FilterPredicates);
|
|
|
|
+ var view = (DataGrid.ItemsSource as DataTable)?.DefaultView;
|
|
|
|
+ view.ApplyFilters(ColumnList.OfType<DynamicActionColumn>());
|
|
|
|
+ e.Handled = true;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
private void DataGrid_FilterChanged(object? o, GridFilterEventArgs e)
|
|
private void DataGrid_FilterChanged(object? o, GridFilterEventArgs e)
|
|
{
|
|
{
|
|
var col = DataGrid.Columns.IndexOf(e.Column);
|
|
var col = DataGrid.Columns.IndexOf(e.Column);
|
|
if (GetColumn(col) is DynamicActionColumn column)
|
|
if (GetColumn(col) is DynamicActionColumn column)
|
|
{
|
|
{
|
|
- if (e.FilterPredicates != null)
|
|
|
|
- {
|
|
|
|
- var filter = e.FilterPredicates.Select(x => x.FilterValue.ToString()!).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 = 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);
|
|
|
|
|
|
+ column.SetFilters(e.FilterPredicates);
|
|
e.Handled = true;
|
|
e.Handled = true;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -627,6 +614,8 @@ public class DynamicGridGridUIComponent<T> : IDynamicGridUIComponent<T>, IDynami
|
|
UpdateRecordCount();
|
|
UpdateRecordCount();
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
|
|
+
|
|
private void UpdateRecordCount()
|
|
private void UpdateRecordCount()
|
|
{
|
|
{
|
|
var count = DataGrid.View != null ? DataGrid.View.Records.Count : Parent.Data.Rows.Count;
|
|
var count = DataGrid.View != null ? DataGrid.View.Records.Count : Parent.Data.Rows.Count;
|
|
@@ -1326,6 +1315,9 @@ public class DynamicGridGridUIComponent<T> : IDynamicGridUIComponent<T>, IDynami
|
|
|
|
|
|
public void RefreshColumns(IEnumerable<DynamicColumnBase> columns, DynamicGridColumnGroupings groupings)
|
|
public void RefreshColumns(IEnumerable<DynamicColumnBase> columns, DynamicGridColumnGroupings groupings)
|
|
{
|
|
{
|
|
|
|
+ if (DataGrid.View != null)
|
|
|
|
+ DataGrid.View.Filter = null;
|
|
|
|
+
|
|
DataGrid.ItemsSource = null;
|
|
DataGrid.ItemsSource = null;
|
|
DataGrid.Columns.Suspend();
|
|
DataGrid.Columns.Suspend();
|
|
|
|
|
|
@@ -1379,6 +1371,12 @@ public class DynamicGridGridUIComponent<T> : IDynamicGridUIComponent<T>, IDynami
|
|
// Stock Forecast grid.
|
|
// Stock Forecast grid.
|
|
RefreshData(new CoreTable());
|
|
RefreshData(new CoreTable());
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ if (DataGrid.View != null)
|
|
|
|
+ DataGrid.View.Filter = (o) =>
|
|
|
|
+ {
|
|
|
|
+ return true;
|
|
|
|
+ };
|
|
}
|
|
}
|
|
|
|
|
|
#endregion
|
|
#endregion
|