diff --git a/Mimeo.DynamicUI.Blazor/Forms/ODataGrid.razor.cs b/Mimeo.DynamicUI.Blazor/Forms/ODataGrid.razor.cs index f668fbf..11a7c2a 100644 --- a/Mimeo.DynamicUI.Blazor/Forms/ODataGrid.razor.cs +++ b/Mimeo.DynamicUI.Blazor/Forms/ODataGrid.razor.cs @@ -93,6 +93,9 @@ public partial class ODataGrid [Parameter] public Dictionary CustomFormFieldTypes { get; set; } = []; + [Parameter] + public EventCallback OnQueryChanged { get; set; } + private bool CanCreate => (Service?.SupportsCreate ?? false) && AllowCreate; private bool CanUpdate => (Service?.SupportsUpdate ?? false) && AllowUpdate; private bool CanCopy => (Service?.SupportsCopy ?? false) && AllowCopy; @@ -248,6 +251,8 @@ await taskRunningService.Run(async () => }); previousQuery = query.Clone(); + + await OnQueryChanged.InvokeAsync(previousQuery); } private async Task LoadSearchSuggestions(LoadDataArgs args) diff --git a/Mimeo.DynamicUI/Data/DataPageEnumerable.cs b/Mimeo.DynamicUI/Data/DataPageEnumerable.cs index a932ef6..cf85ef6 100644 --- a/Mimeo.DynamicUI/Data/DataPageEnumerable.cs +++ b/Mimeo.DynamicUI/Data/DataPageEnumerable.cs @@ -13,8 +13,9 @@ private static PageQuery CreateQuery(DataQuery args, Func f.Clone()).ToList(), + Filter = (DataQueryFilterGroup)this.Filter.Clone(), Sorts = this.Sorts.Select(f => f with { } /* clone a record*/).ToList() }; } @@ -54,13 +54,13 @@ public override bool Equals(object? obj) return this.Skip == other.Skip && this.Top == other.Top && this.SearchText == other.SearchText - && this.Filters.SequenceEqual(other.Filters) + && this.Filter.Equals(other.Filter) && this.Sorts.SequenceEqual(other.Sorts); } public override int GetHashCode() { - return HashCode.Combine(Skip, Top, SearchText, Filters, Sorts); + return HashCode.Combine(Skip, Top, SearchText, Filter, Sorts); } public static bool operator ==(DataQuery? left, DataQuery? right) diff --git a/Mimeo.DynamicUI/Data/DataQueryFilterGroup.cs b/Mimeo.DynamicUI/Data/DataQueryFilterGroup.cs index f515a51..824e6b0 100644 --- a/Mimeo.DynamicUI/Data/DataQueryFilterGroup.cs +++ b/Mimeo.DynamicUI/Data/DataQueryFilterGroup.cs @@ -22,7 +22,8 @@ public override DataQueryFilterBase Clone() { return new DataQueryFilterGroup { - Filters = Filters.Select(f => f.Clone()).ToList() + Filters = Filters.Select(f => f.Clone()).ToList(), + FiltersConjunction = FiltersConjunction }; }