Skip to content

Commit 3a959c6

Browse files
tesar-techstsrki
andauthored
DataGrid: add FilterDefaultItem* parameters to DataGridSelectColumn (#6074)
* Add FilterDefaultItem* parameters and conditionally render based on cell being in a filter on not * Formating * removes unnecessary `false`s * Refactored DataGrid cell area logic by introducing DataGridCellArea enum. * Rename to DataGridCellSection --------- Co-authored-by: Mladen Macanovic <mladen.macanovic@blazorise.com> Co-authored-by: Mladen Macanovic <mladen.macanovic@gmail.com>
1 parent 4fdb15d commit 3a959c6

6 files changed

Lines changed: 73 additions & 16 deletions

File tree

Documentation/Blazorise.Docs/Pages/News/2025-03-10-release-notes-180.razor

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,14 @@
118118
Introduced the <Code>Task New( TItem newItem )</Code> overload method in DataGrid, enabling the programmatic addition of new items to the batch edit collection when batch editing is enabled. This method ensures that newly added items are tracked as unsaved changes, allowing them to be persisted upon saving or discarded upon cancellation.
119119
</Paragraph>
120120

121+
<Heading Size="HeadingSize.Is3">
122+
DataGrid: Added support for default item in filter for DataGridSelectColumn
123+
</Heading>
124+
125+
<Paragraph>
126+
New parameters <Code>FilterDefaultItemText</Code>, <Code>FilterDefaultItemValue</Code>, <Code>FilterDefaultItemDisabled</Code>, and <Code>FilterDefaultItemHidden</Code> allow customizing the default item shown in filter dropdowns of <Code>DataGridSelectColumn</Code>. This gives developers more control over how filter options are presented and improves the user experience when working with dropdown filters.
127+
</Paragraph>
128+
121129
<Heading Size="HeadingSize.Is3">
122130
Show Week Numbers On DatePicker
123131
</Heading>

Source/Extensions/Blazorise.DataGrid/DataGridSelectColumn.cs

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,12 +65,32 @@ public override string FormatDisplayValue( object value )
6565
/// <summary>
6666
/// If true, disables the default item.
6767
/// </summary>
68-
[Parameter] public bool DefaultItemDisabled { get; set; } = false;
68+
[Parameter] public bool DefaultItemDisabled { get; set; }
6969

7070
/// <summary>
7171
/// If true, disables the default item.
7272
/// </summary>
73-
[Parameter] public bool DefaultItemHidden { get; set; } = false;
73+
[Parameter] public bool DefaultItemHidden { get; set; }
74+
75+
/// <summary>
76+
/// Display text of the default item shown in filter dropdowns.
77+
/// </summary>
78+
[Parameter] public string FilterDefaultItemText { get; set; }
79+
80+
/// <summary>
81+
/// Value of the default item used in filter dropdowns.
82+
/// </summary>
83+
[Parameter] public object FilterDefaultItemValue { get; set; }
84+
85+
/// <summary>
86+
/// If true, disables the default item in filter dropdowns.
87+
/// </summary>
88+
[Parameter] public bool FilterDefaultItemDisabled { get; set; }
89+
90+
/// <summary>
91+
/// If true, hides the default item from filter dropdowns.
92+
/// </summary>
93+
[Parameter] public bool FilterDefaultItemHidden { get; set; }
7494

7595
/// <summary>
7696
/// Custom css class-names.
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
namespace Blazorise.DataGrid;
2+
3+
/// <summary>
4+
/// Determines the section where the cell is located within DataGrid.
5+
/// </summary>
6+
public enum DataGridCellSection
7+
{
8+
/// <summary>
9+
/// A cell in the main content area (body).
10+
/// </summary>
11+
Body,
12+
13+
/// <summary>
14+
/// A cell in the filter row area.
15+
/// </summary>
16+
Filter,
17+
}

Source/Extensions/Blazorise.DataGrid/_DataGridCellFilter.razor

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,29 +1,25 @@
11
@using Blazorise.Extensions;
22
@typeparam TItem
33
@{
4-
if ( Column is DataGridNumericColumn<TItem> numericColumn )
4+
@if ( Column is DataGridNumericColumn<TItem> numericColumn )
55
{
6-
<_DataGridCellNumericEdit Column="@numericColumn" CellValue="@GetSearchValue()" CellValueChanged="@FilterChanged"></_DataGridCellNumericEdit>
7-
6+
<_DataGridCellNumericEdit Column="@numericColumn" CellValue="@GetSearchValue()" CellValueChanged="@FilterChanged" />
87
}
98
else if ( Column is DataGridSelectColumn<TItem> selectColumn )
109
{
11-
<_DataGridCellSelectEdit Column="@selectColumn" CellValue="@GetSearchValue()" CellValueChanged="@FilterChanged"></_DataGridCellSelectEdit>
12-
10+
<_DataGridCellSelectEdit Column="@selectColumn" CellValue="@GetSearchValue()" CellValueChanged="@FilterChanged" CellSection="DataGridCellSection.Filter" />
1311
}
1412
else if ( Column is DataGridCheckColumn<TItem> checkColumn )
1513
{
16-
<_DataGridCellCheckEdit Column="@checkColumn" CellValue="@GetSearchValue()" CellValueChanged="@FilterChanged"></_DataGridCellCheckEdit>
17-
14+
<_DataGridCellCheckEdit Column="@checkColumn" CellValue="@GetSearchValue()" CellValueChanged="@FilterChanged" />
1815
}
1916
else if ( Column is DataGridDateColumn<TItem> dateColumn )
2017
{
21-
<_DataGridCellDatePicker Column="@dateColumn" CellValue="@GetSearchValue()" CellValueChanged="@FilterChanged"></_DataGridCellDatePicker>
22-
18+
<_DataGridCellDatePicker Column="@dateColumn" CellValue="@GetSearchValue()" CellValueChanged="@FilterChanged" />
2319
}
2420
else
2521
{
26-
<TextEdit Text="@GetSearchValueAsString()" TextChanged="@((newValue) => FilterChanged(newValue))" />
22+
<TextEdit Text="@GetSearchValueAsString()" TextChanged="@(( newValue ) => FilterChanged( newValue ))" />
2723
}
2824
}
2925
@code {
@@ -84,5 +80,4 @@
8480
{
8581
return ( Column.Filter.SearchValue as object[] )?[1];
8682
}
87-
8883
}

Source/Extensions/Blazorise.DataGrid/_DataGridCellSelectEdit.razor

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,20 @@
11
@typeparam TItem
22
@inherits ComponentBase
3-
<Select TValue="object" ElementId="@elementId" SelectedValues="@GetSelectedValues()" SelectedValuesChanged="OnSelectedValuesChanged" SelectedValuesExpression="@(() => CellValue as string[] )" SelectedValue="@CellValue" SelectedValueChanged="@OnSelectedValueChanged" SelectedValueExpression="@(() => CellValue )"
3+
<Select TValue="object" ElementId="@elementId" SelectedValues="@GetSelectedValues()" SelectedValuesChanged="OnSelectedValuesChanged" SelectedValuesExpression="@(() => CellValue as string[])" SelectedValue="@CellValue" SelectedValueChanged="@OnSelectedValueChanged" SelectedValueExpression="@(() => CellValue)"
44
Class="@Column.Class" Style="@Column.Style" Size="@Column.Size" MaxVisibleItems="@Column.MaxVisibleItems" TabIndex="@Column.TabIndex" Disabled="@Column.Disabled" Multiple="@Column.Multiple" Attributes="@Column.Attributes">
55
<ChildContent>
6-
@if ( Column.DefaultItemText is not null )
6+
@{
7+
var defaultText = CellSection == DataGridCellSection.Filter ? Column.FilterDefaultItemText : Column.DefaultItemText;
8+
var defaultValue = CellSection == DataGridCellSection.Filter ? Column.FilterDefaultItemValue : Column.DefaultItemValue;
9+
var defaultDisabled = CellSection == DataGridCellSection.Filter ? Column.FilterDefaultItemDisabled : Column.DefaultItemDisabled;
10+
var defaultHidden = CellSection == DataGridCellSection.Filter ? Column.FilterDefaultItemHidden : Column.DefaultItemHidden;
11+
}
12+
13+
@if ( defaultText is not null )
714
{
8-
<SelectItem @key="@Column.DefaultItemValue" Value="@Column.DefaultItemValue" Disabled="@Column.DefaultItemDisabled" Hidden="@Column.DefaultItemHidden">@Column.DefaultItemText</SelectItem>
15+
<SelectItem @key="@defaultValue" Value="@defaultValue" Disabled="@defaultDisabled" Hidden="@defaultHidden">
16+
@defaultText
17+
</SelectItem>
918
}
1019
@if ( Column.Data is not null && selectItems is not null )
1120
{

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,15 @@ public async Task Select()
208208
/// </summary>
209209
[Parameter] public EventCallback<object> CellValueChanged { get; set; }
210210

211+
/// <summary>
212+
/// Indicates whether to display validation feedback to the user.
213+
/// </summary>
211214
[Parameter] public bool ShowValidationFeedback { get; set; }
212215

216+
/// <summary>
217+
/// Determines the area where the cell is located.
218+
/// </summary>
219+
[Parameter] public DataGridCellSection CellSection { get; set; }
220+
213221
#endregion
214222
}

0 commit comments

Comments
 (0)