Enhance grid filtering and sorting functionality
Updated `DxGrid` components for `_activeEnvelopes` and `_completedEnvelopes`: - Disabled `ShowFilterRow` and added `FilterMenuButtonDisplayMode` to always display filter menu buttons. - Enabled sorting for the `Id` column with descending order and added a display format. - Added `EditSettings` to the `Status` column with a `DxComboBoxSettings` for filtering, using the new `GetStatusFilterItems` method. Introduced `GetStatusFilterItems` to generate distinct status filter items and added a private `StatusFilterItem` record type for encapsulating status values and labels. Made minor adjustments to grid layout auto-saving logic for consistency.
This commit is contained in:
@@ -219,7 +219,8 @@
|
|||||||
<DxGrid Data="@_activeEnvelopes"
|
<DxGrid Data="@_activeEnvelopes"
|
||||||
@ref="_gridActive"
|
@ref="_gridActive"
|
||||||
KeyFieldName="Id"
|
KeyFieldName="Id"
|
||||||
ShowFilterRow="true"
|
ShowFilterRow="false"
|
||||||
|
FilterMenuButtonDisplayMode="GridFilterMenuButtonDisplayMode.Always"
|
||||||
ShowSearchBox="true"
|
ShowSearchBox="true"
|
||||||
AllowColumnReorder="true"
|
AllowColumnReorder="true"
|
||||||
AllowSort=true
|
AllowSort=true
|
||||||
@@ -237,6 +238,7 @@
|
|||||||
LayoutAutoSaving="OnActiveGridLayoutAutoSaving">
|
LayoutAutoSaving="OnActiveGridLayoutAutoSaving">
|
||||||
<Columns>
|
<Columns>
|
||||||
<DxGridDataColumn FieldName="Id" Caption="ID"
|
<DxGridDataColumn FieldName="Id" Caption="ID"
|
||||||
|
DisplayFormat="0"
|
||||||
SortIndex="0"
|
SortIndex="0"
|
||||||
SortOrder="GridColumnSortOrder.Descending">
|
SortOrder="GridColumnSortOrder.Descending">
|
||||||
<CellDisplayTemplate Context="cellContext">
|
<CellDisplayTemplate Context="cellContext">
|
||||||
@@ -249,6 +251,13 @@
|
|||||||
</CellDisplayTemplate>
|
</CellDisplayTemplate>
|
||||||
</DxGridDataColumn>
|
</DxGridDataColumn>
|
||||||
<DxGridDataColumn FieldName="Status" Caption="@L("Status", "Status")" ExportEnabled="false">
|
<DxGridDataColumn FieldName="Status" Caption="@L("Status", "Status")" ExportEnabled="false">
|
||||||
|
<EditSettings>
|
||||||
|
<DxComboBoxSettings Data="@GetStatusFilterItems(_activeEnvelopes)"
|
||||||
|
ValueFieldName="Value"
|
||||||
|
TextFieldName="Text"
|
||||||
|
SearchMode="ListSearchMode.AutoSearch"
|
||||||
|
SearchFilterCondition="ListSearchFilterCondition.Contains" />
|
||||||
|
</EditSettings>
|
||||||
<CellDisplayTemplate Context="cellContext">
|
<CellDisplayTemplate Context="cellContext">
|
||||||
@{
|
@{
|
||||||
var envelope = cellContext.DataItem as EnvelopeDto;
|
var envelope = cellContext.DataItem as EnvelopeDto;
|
||||||
@@ -376,7 +385,8 @@
|
|||||||
<DxGrid Data="@_completedEnvelopes"
|
<DxGrid Data="@_completedEnvelopes"
|
||||||
@ref="_gridCompleted"
|
@ref="_gridCompleted"
|
||||||
KeyFieldName="Id"
|
KeyFieldName="Id"
|
||||||
ShowFilterRow="true"
|
ShowFilterRow="false"
|
||||||
|
FilterMenuButtonDisplayMode="GridFilterMenuButtonDisplayMode.Always"
|
||||||
ShowSearchBox="true"
|
ShowSearchBox="true"
|
||||||
PageSize="20"
|
PageSize="20"
|
||||||
PagerVisible="true"
|
PagerVisible="true"
|
||||||
@@ -391,6 +401,7 @@
|
|||||||
LayoutAutoSaving="OnCompletedGridLayoutAutoSaving">
|
LayoutAutoSaving="OnCompletedGridLayoutAutoSaving">
|
||||||
<Columns>
|
<Columns>
|
||||||
<DxGridDataColumn FieldName="Id" Caption="ID"
|
<DxGridDataColumn FieldName="Id" Caption="ID"
|
||||||
|
DisplayFormat="0"
|
||||||
SortIndex="0"
|
SortIndex="0"
|
||||||
SortOrder="GridColumnSortOrder.Descending">
|
SortOrder="GridColumnSortOrder.Descending">
|
||||||
<CellDisplayTemplate Context="cellContext">
|
<CellDisplayTemplate Context="cellContext">
|
||||||
@@ -403,6 +414,13 @@
|
|||||||
</CellDisplayTemplate>
|
</CellDisplayTemplate>
|
||||||
</DxGridDataColumn>
|
</DxGridDataColumn>
|
||||||
<DxGridDataColumn FieldName="Status" Caption="@L("Status", "Status")" ExportEnabled="false">
|
<DxGridDataColumn FieldName="Status" Caption="@L("Status", "Status")" ExportEnabled="false">
|
||||||
|
<EditSettings>
|
||||||
|
<DxComboBoxSettings Data="@GetStatusFilterItems(_completedEnvelopes)"
|
||||||
|
ValueFieldName="Value"
|
||||||
|
TextFieldName="Text"
|
||||||
|
SearchMode="ListSearchMode.AutoSearch"
|
||||||
|
SearchFilterCondition="ListSearchFilterCondition.Contains" />
|
||||||
|
</EditSettings>
|
||||||
<CellDisplayTemplate Context="cellContext">
|
<CellDisplayTemplate Context="cellContext">
|
||||||
@{
|
@{
|
||||||
var envelope = cellContext.DataItem as EnvelopeDto;
|
var envelope = cellContext.DataItem as EnvelopeDto;
|
||||||
@@ -917,6 +935,16 @@
|
|||||||
.Take(20);
|
.Take(20);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
IReadOnlyList<StatusFilterItem> GetStatusFilterItems(IEnumerable<EnvelopeDto>? source)
|
||||||
|
{
|
||||||
|
return (source ?? Enumerable.Empty<EnvelopeDto>())
|
||||||
|
.Select(x => x.Status)
|
||||||
|
.Distinct()
|
||||||
|
.OrderBy(x => x)
|
||||||
|
.Select(x => new StatusFilterItem(x, GetStatusLabel(x)))
|
||||||
|
.ToList();
|
||||||
|
}
|
||||||
|
|
||||||
DateTime GetHistoryDate(HistoryDto history)
|
DateTime GetHistoryDate(HistoryDto history)
|
||||||
{
|
{
|
||||||
return history.ActionDate ?? history.AddedWhen;
|
return history.ActionDate ?? history.AddedWhen;
|
||||||
@@ -1072,4 +1100,6 @@
|
|||||||
var json = JsonSerializer.Serialize(e.Layout);
|
var json = JsonSerializer.Serialize(e.Layout);
|
||||||
await UserPreferencesService.SaveGridLayoutAsync(GridKeyCompleted, json);
|
await UserPreferencesService.SaveGridLayoutAsync(GridKeyCompleted, json);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private sealed record StatusFilterItem(EnvelopeStatus Value, string Text);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user