Skip to content

Commit 26b2cf6

Browse files
authored
Merge pull request #162 from w-ahmad/null_handling
better handling for blank values in column filter
2 parents 473287a + a9361e7 commit 26b2cf6

File tree

1 file changed

+14
-6
lines changed

1 file changed

+14
-6
lines changed

src/ColumnFilterHandler.cs

Lines changed: 14 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,12 @@ public virtual IList<TableViewFilterItem> GetFilterItems(TableViewColumn column,
3434
foreach (var item in collectionView)
3535
{
3636
var value = column.GetCellContent(item);
37-
filterValues.Add(value);
37+
filterValues.Add(IsBlank(value) ? null : value);
3838
}
3939

40-
return filterValues.Select(value =>
40+
return [.. filterValues.Select(value =>
4141
{
42-
value = string.IsNullOrWhiteSpace(value?.ToString()) ? TableViewLocalizedStrings.BlankFilterValue : value;
42+
value ??= TableViewLocalizedStrings.BlankFilterValue;
4343
var isSelected = !column.IsFiltered || !string.IsNullOrEmpty(searchText) ||
4444
(column.IsFiltered && SelectedValues[column].Contains(value));
4545

@@ -48,13 +48,21 @@ public virtual IList<TableViewFilterItem> GetFilterItems(TableViewColumn column,
4848
? new TableViewFilterItem(isSelected, value)
4949
: null;
5050

51-
}).OfType<TableViewFilterItem>()
52-
.ToList();
51+
}).OfType<TableViewFilterItem>()];
5352
}
5453

5554
return [];
5655
}
5756

57+
private static bool IsBlank(object? value)
58+
{
59+
return value == null ||
60+
value == DBNull.Value ||
61+
(value is string str && string.IsNullOrWhiteSpace(str)) ||
62+
(value is Guid guid && guid == Guid.Empty);
63+
}
64+
65+
5866
public virtual void ApplyFilter(TableViewColumn column)
5967
{
6068
if (column is { TableView: { } })
@@ -107,7 +115,7 @@ public virtual void ClearFilter(TableViewColumn? column)
107115
public virtual bool Filter(TableViewColumn column, object? item)
108116
{
109117
var value = column.GetCellContent(item);
110-
value = string.IsNullOrWhiteSpace(value?.ToString()) ? TableViewLocalizedStrings.BlankFilterValue : value;
118+
value = IsBlank(value) ? TableViewLocalizedStrings.BlankFilterValue : value!;
111119
return SelectedValues[column].Contains(value);
112120
}
113121

0 commit comments

Comments
 (0)