From 9729a5ef16638c29f36aaa72cfca5f7e139df1ac Mon Sep 17 00:00:00 2001 From: sbwalker Date: Fri, 13 Oct 2023 08:39:02 -0400 Subject: [PATCH] improve Pager search to support properties on child objects --- Oqtane.Client/Modules/Admin/Users/Index.razor | 2 +- Oqtane.Client/Modules/Controls/Pager.razor | 41 ++++++++++++++++--- 2 files changed, 37 insertions(+), 6 deletions(-) diff --git a/Oqtane.Client/Modules/Admin/Users/Index.razor b/Oqtane.Client/Modules/Admin/Users/Index.razor index bfc6ce95..4cd17e00 100644 --- a/Oqtane.Client/Modules/Admin/Users/Index.razor +++ b/Oqtane.Client/Modules/Admin/Users/Index.razor @@ -20,7 +20,7 @@ else   - +
    diff --git a/Oqtane.Client/Modules/Controls/Pager.razor b/Oqtane.Client/Modules/Controls/Pager.razor index fa6a1368..668fa4ee 100644 --- a/Oqtane.Client/Modules/Controls/Pager.razor +++ b/Oqtane.Client/Modules/Controls/Pager.razor @@ -9,7 +9,7 @@ @if (!string.IsNullOrEmpty(SearchProperties)) {
- +
@@ -415,12 +415,25 @@ private object GetPropertyValue(object obj, string propertyName) { - var propertyInfo = obj.GetType().GetProperty(propertyName); - if (propertyInfo != null) + var index = propertyName.IndexOf("."); + if (index != -1) { - return propertyInfo.GetValue(obj); + var propertyInfo = obj.GetType().GetProperty(propertyName.Substring(0, index)); + if (propertyInfo != null) + { + return GetPropertyValue(propertyInfo.GetValue(obj), propertyName.Substring(index + 1)); + } + return null; + } + else + { + var propertyInfo = obj.GetType().GetProperty(propertyName); + if (propertyInfo != null) + { + return propertyInfo.GetValue(obj); + } + return null; } - return null; } public void Reset() @@ -430,4 +443,22 @@ _pages = (int)Math.Ceiling(Items.Count() / (decimal)_maxItems); UpdateList(1); } + + private string FormatSearchProperties() + { + var properties = new List(); + foreach (var property in SearchProperties.Split(',', StringSplitOptions.RemoveEmptyEntries)) + { + var index = property.LastIndexOf("."); + if (index != -1) + { + properties.Add(property.Substring(index + 1)); + } + else + { + properties.Add(property); + } + } + return string.Join(",", properties); + } }