Skip to content

Commit edb279c

Browse files
committed
DataGrid: determine the filter method based on column type
1 parent fb11554 commit edb279c

File tree

6 files changed

+57
-12
lines changed

6 files changed

+57
-12
lines changed

Source/Extensions/Blazorise.DataGrid/DataGrid.razor.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2508,7 +2508,7 @@ where column.CustomFilter( cellRealValue, column.Filter.SearchValue )
25082508
query = from item in query
25092509
let cellRealValue = column.GetValue( item )
25102510
let cellStringValue = cellRealValue == null ? string.Empty : cellRealValue.ToString()
2511-
where CompareFilterRangeValues( cellStringValue, stringSearchValue1, stringSearchValue2, column.GetFilterMethod(), column.ColumnType, column.GetValueType( item ) )
2511+
where CompareFilterRangeValues( cellStringValue, stringSearchValue1, stringSearchValue2, currentFilterMode, column.ColumnType, column.GetValueType( item ) )
25122512
select item;
25132513

25142514
continue;
@@ -2522,7 +2522,7 @@ where CompareFilterRangeValues( cellStringValue, stringSearchValue1, stringSearc
25222522
query = from item in query
25232523
let cellRealValue = column.GetValue( item )
25242524
let cellStringValue = cellRealValue == null ? string.Empty : cellRealValue.ToString()
2525-
where CompareFilterValues( cellStringValue, stringSearchValue, column.GetFilterMethod(), column.ColumnType, column.GetValueType( item ) )
2525+
where CompareFilterValues( cellStringValue, stringSearchValue, currentFilterMode, column.ColumnType, column.GetValueType( item ) )
25262526
select item;
25272527
}
25282528
}
@@ -3625,9 +3625,9 @@ public IReadOnlyList<DataGridBatchEditItem<TItem>> BatchChanges
36253625
[Parameter] public int MaxPaginationLinks { get => paginationContext.MaxPaginationLinks; set => paginationContext.MaxPaginationLinks = value; }
36263626

36273627
/// <summary>
3628-
/// Defines the filter method when searching the cell values.
3628+
/// Defines the filter method to be applied when filtering data in the grid.
36293629
/// </summary>
3630-
[Parameter] public DataGridFilterMethod FilterMethod { get; set; } = DataGridFilterMethod.Contains;
3630+
[Parameter] public DataGridFilterMethod FilterMethod { get; set; }
36313631

36323632
/// <summary>
36333633
/// Gets or sets currently selected row.

Source/Extensions/Blazorise.DataGrid/DataGridCheckColumn.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,5 +2,11 @@
22

33
public class DataGridCheckColumn<TItem> : DataGridColumn<TItem>
44
{
5-
public override DataGridColumnType ColumnType => DataGridColumnType.Check;
5+
/// <inheritdoc/>
6+
internal override DataGridColumnFilterMethod GetDefaultFilterMethod()
7+
=> DataGridColumnFilterMethod.Equals;
8+
9+
/// <inheritdoc/>
10+
public override DataGridColumnType ColumnType
11+
=> DataGridColumnType.Check;
612
}

Source/Extensions/Blazorise.DataGrid/DataGridColumn.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,6 @@ private void InitializeDefaults()
119119
Filter?.Subscribe( OnSearchValueChanged );
120120
}
121121

122-
123122
/// <summary>
124123
/// Provides a way to generate column specific dependencies outside the Blazor engine.
125124
/// </summary>
@@ -428,9 +427,16 @@ internal DataGridColumnFilterMethod GetDataGridFilterMethodAsColumn()
428427
: ParentDataGrid.FilterMethod == DataGridFilterMethod.EndsWith ? DataGridColumnFilterMethod.EndsWith
429428
: ParentDataGrid.FilterMethod == DataGridFilterMethod.Equals ? DataGridColumnFilterMethod.Equals
430429
: ParentDataGrid.FilterMethod == DataGridFilterMethod.NotEquals ? DataGridColumnFilterMethod.NotEquals
431-
: DataGridColumnFilterMethod.Contains;
430+
: GetDefaultFilterMethod();
432431
}
433432

433+
/// <summary>
434+
/// Retrieves the default filter method for the column.
435+
/// </summary>
436+
/// <returns>The default <see cref="DataGridColumnFilterMethod"/> used for filtering, which is <see cref="DataGridColumnFilterMethod.Contains"/>.</returns>
437+
internal virtual DataGridColumnFilterMethod GetDefaultFilterMethod()
438+
=> DataGridColumnFilterMethod.Contains;
439+
434440
#endregion
435441

436442
#region Properties

Source/Extensions/Blazorise.DataGrid/DataGridDateColumn.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,13 @@ namespace Blazorise.DataGrid;
88

99
public class DataGridDateColumn<TItem> : DataGridColumn<TItem>
1010
{
11-
public override DataGridColumnType ColumnType => DataGridColumnType.Date;
11+
/// <inheritdoc/>
12+
internal override DataGridColumnFilterMethod GetDefaultFilterMethod()
13+
=> DataGridColumnFilterMethod.Equals;
14+
15+
/// <inheritdoc/>
16+
public override DataGridColumnType ColumnType
17+
=> DataGridColumnType.Date;
1218

1319
/// <summary>
1420
/// Hints at the type of data that might be entered by the user while editing the element or its contents.

Source/Extensions/Blazorise.DataGrid/DataGridNumericColumn.cs

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,13 @@ namespace Blazorise.DataGrid;
1010
/// <typeparam name="TItem">Type parameter for the model displayed in the <see cref="DataGrid{TItem}"/>.</typeparam>
1111
public class DataGridNumericColumn<TItem> : DataGridColumn<TItem>
1212
{
13-
/// <summary>
14-
/// Gets the column type.
15-
/// </summary>
16-
public override DataGridColumnType ColumnType => DataGridColumnType.Numeric;
13+
/// <inheritdoc/>
14+
internal override DataGridColumnFilterMethod GetDefaultFilterMethod()
15+
=> DataGridColumnFilterMethod.Equals;
16+
17+
/// <inheritdoc/>
18+
public override DataGridColumnType ColumnType
19+
=> DataGridColumnType.Numeric;
1720

1821
/// <summary>
1922
/// Specifies the interval between valid values.

Source/Extensions/Blazorise.DataGrid/Enums/DataGridFilterMethod.cs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,33 @@
55
/// </summary>
66
public enum DataGridFilterMethod
77
{
8+
/// <summary>
9+
/// Defaults to the column specific default filter method.
10+
/// </summary>
11+
Default,
12+
13+
/// <summary>
14+
/// Determines whether the specified substring occurs within this string.
15+
/// </summary>
816
Contains,
17+
18+
/// <summary>
19+
/// Determines whether the beginning of this string matches the specified substring.
20+
/// </summary>
921
StartsWith,
22+
23+
/// <summary>
24+
/// Determines whether the end of this string matches the specified substring.
25+
/// </summary>
1026
EndsWith,
27+
28+
/// <summary>
29+
/// Determines whether two values are equal.
30+
/// </summary>
1131
Equals,
32+
33+
/// <summary>
34+
/// Determines whether the specified values are not equal.
35+
/// </summary>
1236
NotEquals,
1337
}

0 commit comments

Comments
 (0)