{FilterOperator.IsNotEmpty, "ne"}
};
- protected override string GetColumnODataFilter(object filterValue, FilterOperator filterOperator)
+ protected override string GetColumnODataFilter(object? filterValue, FilterOperator filterOperator)
{
var odataOperator = DataFilterOperators[filterOperator];
var property = GetFilterProperty().Replace('.', '/');
diff --git a/Mimeo.DynamicUI.Blazor/Forms/DataFilter/DataFilterField.razor b/Mimeo.DynamicUI.Blazor/Forms/DataFilter/DataFilterField.razor
index 82bffd5..a389f85 100644
--- a/Mimeo.DynamicUI.Blazor/Forms/DataFilter/DataFilterField.razor
+++ b/Mimeo.DynamicUI.Blazor/Forms/DataFilter/DataFilterField.razor
@@ -1,5 +1,4 @@
@using Mimeo.DynamicUI.Blazor.Extensions
-@using Radzen.Blazor.Rendering
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/Mimeo.DynamicUI.Blazor/Forms/DataFilter/DataFilterField.razor.cs b/Mimeo.DynamicUI.Blazor/Forms/DataFilter/DataFilterField.razor.cs
index 0e3f492..25e904b 100644
--- a/Mimeo.DynamicUI.Blazor/Forms/DataFilter/DataFilterField.razor.cs
+++ b/Mimeo.DynamicUI.Blazor/Forms/DataFilter/DataFilterField.razor.cs
@@ -3,14 +3,14 @@
using Mimeo.DynamicUI.Blazor.Extensions;
using Mimeo.DynamicUI.Data;
using Mimeo.DynamicUI.Data.OData;
-using Radzen.Blazor.Rendering;
+using Radzen.Blazor;
namespace Mimeo.DynamicUI.Blazor.Forms.DataFilter
{
public partial class DataFilterField
{
private ElementReference _customSplitButton;
- private Popup? _popup;
+ private RadzenPopup? _popup;
private IEnumerable? _filterOperators;
[Parameter]
diff --git a/Mimeo.DynamicUI.Blazor/Forms/ODataGrid.razor b/Mimeo.DynamicUI.Blazor/Forms/ODataGrid.razor
index d242a5c..8aa69ac 100644
--- a/Mimeo.DynamicUI.Blazor/Forms/ODataGrid.razor
+++ b/Mimeo.DynamicUI.Blazor/Forms/ODataGrid.razor
@@ -29,7 +29,14 @@
@if (SupportsSearchText)
{
-
+ @if (SupportsSearchAutoComplete)
+ {
+
+ }
+ else
+ {
+
+ }
}
(Service?.SupportsDelete ?? false) && AllowDelete;
private bool CanView => (Service?.SupportsView ?? false) && AllowView;
private bool SupportsSearchText => Service?.SupportsSearchText ?? false;
+ private bool SupportsSearchAutoComplete => Service?.SupportsSearchAutoComplete ?? false;
private RadzenDataGrid? gridRef;
private bool IsSmall;
@@ -213,18 +214,28 @@ private async Task LoadData(LoadDataArgs args)
}
// Work around Radzen bug where it's not thread safe
- args.Filters = args.Filters.ToList();
- args.Sorts = args.Sorts.ToList();
+ args.Filters = args.Filters?.ToList() ?? [];
+ args.Sorts = args.Sorts?.ToList() ?? [];
// The GridItem class is private to this control
// Filters and sorts will be on a GridItem property,
// but we need to feed the actual property to ListMethod()
foreach (var filter in args.Filters)
{
+ if (string.IsNullOrEmpty(filter.Property))
+ {
+ continue;
+ }
+
filter.Property = filter.Property.Replace($"{nameof(GridItem.ListModel)}.", "").Replace($"{nameof(GridItem.ListModel)}/", "");
}
foreach (var orderBy in args.Sorts)
{
+ if (string.IsNullOrEmpty(orderBy.Property))
+ {
+ continue;
+ }
+
orderBy.Property = orderBy.Property.Replace($"{nameof(GridItem.ListModel)}.", "").Replace($"{nameof(GridItem.ListModel)}/", "");
}
searchModel ??= await taskRunningService.Run(() => Service.GetSearchModel());
diff --git a/Mimeo.DynamicUI.Blazor/Mimeo.DynamicUI.Blazor.csproj b/Mimeo.DynamicUI.Blazor/Mimeo.DynamicUI.Blazor.csproj
index 8f148dd..c3f2ac0 100644
--- a/Mimeo.DynamicUI.Blazor/Mimeo.DynamicUI.Blazor.csproj
+++ b/Mimeo.DynamicUI.Blazor/Mimeo.DynamicUI.Blazor.csproj
@@ -1,7 +1,7 @@
- net8.0;net10.0
+ net10.0
enable
enable
README.md
@@ -20,25 +20,15 @@