@@ -49,6 +49,11 @@ public partial class DataGrid<TItem> : BaseDataGridComponent
49
49
/// </summary>
50
50
private List < TItem > filteredData = new ( ) ;
51
51
52
+ /// <summary>
53
+ /// Represents the last known count of data items processed or retrieved.
54
+ /// </summary>
55
+ private int lastKnownDataCount ;
56
+
52
57
/// <summary>
53
58
/// Holds the filtered data to display based on the current page.
54
59
/// </summary>
@@ -468,8 +473,17 @@ public override async Task SetParametersAsync( ParameterView parameters )
468
473
{
469
474
await CheckMultipleSelectionSetEmpty ( parameters ) ;
470
475
471
- if ( parameters . TryGetValue < IEnumerable < TItem > > ( nameof ( Data ) , out var paramData ) && ! Data . AreEqual ( paramData ) )
472
- SetDirty ( ) ;
476
+ if ( parameters . TryGetValue < IEnumerable < TItem > > ( nameof ( Data ) , out var paramData ) )
477
+ {
478
+ var newCount = paramData ? . Count ( ) ?? 0 ;
479
+
480
+ if ( lastKnownDataCount != newCount || ! Data . AreEqual ( paramData ) )
481
+ {
482
+ SetDirty ( ) ;
483
+ }
484
+
485
+ lastKnownDataCount = newCount ;
486
+ }
473
487
474
488
if ( parameters . TryGetValue < DataGridSelectionMode > ( nameof ( SelectionMode ) , out var paramSelectionMode ) && SelectionMode != paramSelectionMode )
475
489
ExecuteAfterRender ( HandleSelectionModeChanged ) ;
@@ -1204,8 +1218,12 @@ public async Task Delete( TItem item )
1204
1218
if ( UseInternalEditing )
1205
1219
{
1206
1220
if ( data . Contains ( item ) )
1221
+ {
1207
1222
data . Remove ( item ) ;
1208
1223
1224
+ lastKnownDataCount = Data ? . Count ( ) ?? 0 ;
1225
+ }
1226
+
1209
1227
if ( itemIsSelected )
1210
1228
{
1211
1229
SelectedRow = default ;
@@ -1315,6 +1333,8 @@ protected internal async Task SaveBatch()
1315
1333
break ;
1316
1334
}
1317
1335
}
1336
+
1337
+ lastKnownDataCount = Data ? . Count ( ) ?? 0 ;
1318
1338
}
1319
1339
1320
1340
await BatchSaved . InvokeAsync ( new DataGridBatchSavedEventArgs < TItem > ( batchChanges ) ) ;
@@ -1439,6 +1459,8 @@ protected internal async Task SaveItem()
1439
1459
if ( UseInternalEditing && editState == DataGridEditState . New && CanInsertNewItem && Data is ICollection < TItem > data )
1440
1460
{
1441
1461
data . Add ( editItem ) ;
1462
+
1463
+ lastKnownDataCount = Data ? . Count ( ) ?? 0 ;
1442
1464
}
1443
1465
1444
1466
if ( UseInternalEditing || editState == DataGridEditState . New )
@@ -1494,6 +1516,8 @@ public async Task Cancel()
1494
1516
{
1495
1517
foreach ( var newItem in batchChanges . Where ( x => x . State == DataGridBatchEditItemState . New ) )
1496
1518
data2 . Remove ( newItem . NewItem ) ;
1519
+
1520
+ lastKnownDataCount = Data ? . Count ( ) ?? 0 ;
1497
1521
}
1498
1522
1499
1523
batchChanges ? . Clear ( ) ;
@@ -2173,7 +2197,10 @@ internal async Task<bool> IsSafeToProceed( EventCallback<DataGridBatchSavingEven
2173
2197
2174
2198
#region Filtering
2175
2199
2176
- private void SetDirty ( )
2200
+ /// <summary>
2201
+ /// Marks the current filter and view as dirty, indicating that they require updating.
2202
+ /// </summary>
2203
+ protected void SetDirty ( )
2177
2204
{
2178
2205
dirtyFilter = dirtyView = true ;
2179
2206
}
0 commit comments