Simplify row selection logic in EnvelopeSenderPage
Refactored row selection logic to leverage DevExpress's native `@bind-SelectedDataItem` for automatic updates to the `_selectedEnvelope` variable. Added `AllowSelectRowByClick` to enable row selection via single click. Updated event handlers for layout auto-loading and auto-saving to use specific methods for different grids. Simplified `OnRowClick` method by removing redundant manual selection logic and retaining toggle behavior for deselecting the same row. Updated comments to reflect these changes.
This commit is contained in:
@@ -187,7 +187,9 @@
|
|||||||
PageSize="20"
|
PageSize="20"
|
||||||
PagerVisible="true"
|
PagerVisible="true"
|
||||||
SelectionMode="GridSelectionMode.Single"
|
SelectionMode="GridSelectionMode.Single"
|
||||||
|
AllowSelectRowByClick="true"
|
||||||
SelectedDataItem="@_selectedEnvelope"
|
SelectedDataItem="@_selectedEnvelope"
|
||||||
|
SelectedDataItemChanged="@((object o) => _selectedEnvelope = o as EnvelopeDto)"
|
||||||
RowClick="OnRowClick"
|
RowClick="OnRowClick"
|
||||||
RowDoubleClick="OnRowDoubleClick"
|
RowDoubleClick="OnRowDoubleClick"
|
||||||
CustomizeElement="OnCustomizeElement"
|
CustomizeElement="OnCustomizeElement"
|
||||||
@@ -306,7 +308,9 @@
|
|||||||
PageSize="20"
|
PageSize="20"
|
||||||
PagerVisible="true"
|
PagerVisible="true"
|
||||||
SelectionMode="GridSelectionMode.Single"
|
SelectionMode="GridSelectionMode.Single"
|
||||||
|
AllowSelectRowByClick="true"
|
||||||
SelectedDataItem="@_selectedEnvelope"
|
SelectedDataItem="@_selectedEnvelope"
|
||||||
|
SelectedDataItemChanged="@((object o) => _selectedEnvelope = o as EnvelopeDto)"
|
||||||
RowClick="OnRowClick"
|
RowClick="OnRowClick"
|
||||||
RowDoubleClick="OnRowDoubleClick"
|
RowDoubleClick="OnRowDoubleClick"
|
||||||
CustomizeElement="OnCustomizeElement"
|
CustomizeElement="OnCustomizeElement"
|
||||||
@@ -573,7 +577,8 @@
|
|||||||
// Future: Add custom row coloring based on status if needed
|
// Future: Add custom row coloring based on status if needed
|
||||||
}
|
}
|
||||||
|
|
||||||
// Single click: select row, or deselect if already selected (toggle)
|
// Single click: native DX selection handles the UI instantly.
|
||||||
|
// We only manage toggle: if the same row is clicked again, deselect.
|
||||||
void OnRowClick(GridRowClickEventArgs e)
|
void OnRowClick(GridRowClickEventArgs e)
|
||||||
{
|
{
|
||||||
var clicked = e.Grid.GetDataItem(e.VisibleIndex) as EnvelopeDto;
|
var clicked = e.Grid.GetDataItem(e.VisibleIndex) as EnvelopeDto;
|
||||||
@@ -581,16 +586,11 @@
|
|||||||
|
|
||||||
if (_selectedEnvelope?.Id == clicked.Id)
|
if (_selectedEnvelope?.Id == clicked.Id)
|
||||||
{
|
{
|
||||||
// Already selected → deselect
|
// Same row clicked again → deselect
|
||||||
_selectedEnvelope = null;
|
_selectedEnvelope = null;
|
||||||
e.Grid.DeselectDataItem(clicked);
|
e.Grid.DeselectDataItem(clicked);
|
||||||
}
|
}
|
||||||
else
|
// Different row: @bind-SelectedDataItem already updated _selectedEnvelope
|
||||||
{
|
|
||||||
// New row → select
|
|
||||||
_selectedEnvelope = clicked;
|
|
||||||
e.Grid.SelectDataItem(clicked);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// Double-click: select the row and open preview popup
|
// Double-click: select the row and open preview popup
|
||||||
|
|||||||
Reference in New Issue
Block a user