Skip to content

Commit 146b374

Browse files
committed
DataGrid CheckBoxList filter not populated properly in case of self-referencing hierarchy
1 parent 9264676 commit 146b374

File tree

2 files changed

+7
-4
lines changed

2 files changed

+7
-4
lines changed

Radzen.Blazor/RadzenDataGrid.razor.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1719,7 +1719,7 @@ internal string GetSortOrderAsString(SortDescriptor d, bool isOData)
17191719
[Parameter]
17201720
public EventCallback<DataGridColumnReorderedEventArgs<TItem>> ColumnReordered { get; set; }
17211721

1722-
IQueryable<TItem> GetSelfRefView(IQueryable<TItem> view, string orderBy)
1722+
internal IQueryable<TItem> GetSelfRefView(IQueryable<TItem> view, string orderBy)
17231723
{
17241724
if (!string.IsNullOrEmpty(orderBy))
17251725
{

Radzen.Blazor/RadzenDataGridHeaderCell.razor

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -241,12 +241,14 @@ else
241241

242242
if(!string.IsNullOrEmpty(loadDataArgs.Filter))
243243
{
244-
query = Column.Grid.Data.AsQueryable().Where<TItem>(Column.Grid.allColumns.Where(c => c != Column))
244+
query = (Column.Grid.childData.Any() ? Column.Grid.GetSelfRefView(Column.Grid.Data.AsQueryable(), "") :
245+
Column.Grid.Data.AsQueryable()).Where<TItem>(Column.Grid.allColumns.Where(c => c != Column))
245246
.Where(property, loadDataArgs.Filter, StringFilterOperator.Contains, FilterCaseSensitivity.CaseInsensitive);
246247
}
247248
else
248249
{
249-
query = Column.Grid.Data.AsQueryable().Where<TItem>(Column.Grid.allColumns.Where(c => c != Column));
250+
query = (Column.Grid.childData.Any() ? Column.Grid.GetSelfRefView(Column.Grid.Data.AsQueryable(), "") :
251+
Column.Grid.Data.AsQueryable()).Where<TItem>(Column.Grid.allColumns.Where(c => c != Column));
250252
}
251253

252254
if (Column.Property != Column.FilterProperty && !string.IsNullOrEmpty(Column.FilterProperty))
@@ -271,7 +273,8 @@ else
271273
query = query.Cast<object>().Take(loadDataArgs.Top.Value);
272274
}
273275

274-
filterValues = await Task.FromResult(query.Cast(propertyType));
276+
filterValues = await Task.FromResult(Column.Grid.childData.Any() ?
277+
query.Cast<object>().ToList().AsQueryable().Cast(propertyType) : query.Cast(propertyType));
275278

276279
if (!Column.AllowCheckBoxListVirtualization)
277280
{

0 commit comments

Comments
 (0)