@@ -202,6 +202,8 @@ public bool IsUseActiveWhenValueIsNull
202202
203203 private string _defaultVirtualizedItemText = "" ;
204204
205+ private EventCallback < ChangeEventArgs > _onChangeEventCallback = EventCallback < ChangeEventArgs > . Empty ;
206+
205207 private SelectedItem ? SelectedItem { get ; set ; }
206208
207209 private SelectedItem ? SelectedRow
@@ -234,6 +236,10 @@ protected override void OnParametersSet()
234236 NoSearchDataText ??= Localizer [ nameof ( NoSearchDataText ) ] ;
235237 DropdownIcon ??= IconTheme . GetIconByKey ( ComponentIcons . SelectDropdownIcon ) ;
236238 ClearIcon ??= IconTheme . GetIconByKey ( ComponentIcons . SelectClearIcon ) ;
239+
240+ _onChangeEventCallback = IsEditable
241+ ? EventCallback . Factory . Create < ChangeEventArgs > ( this , OnChange )
242+ : EventCallback < ChangeEventArgs > . Empty ;
237243 }
238244
239245 /// <summary>
@@ -389,6 +395,8 @@ private async Task OnClickItem(SelectedItem item)
389395 _defaultVirtualizedItemText = item . Text ;
390396 await SelectedItemChanged ( item ) ;
391397 }
398+
399+ StateHasChanged ( ) ;
392400 }
393401
394402 private async Task SelectedItemChanged ( SelectedItem item )
@@ -494,11 +502,26 @@ private async Task OnChange(ChangeEventArgs args)
494502 // 修复:使用完整的未过滤列表来查找当前选中项
495503 // 避免在用户搜索时被外部 StateHasChanged 影响导致值被错误修改
496504 var allItems = GetRowsByItems ( ) ;
497-
505+
498506 var item = GetItemWithEnumValue ( )
499507 ?? allItems . Find ( i => i . Value == CurrentValueAsString )
500508 ?? allItems . Find ( i => i . Active )
501509 ?? allItems . Find ( i => ! i . IsDisabled ) ;
502510 return item ;
503511 }
512+
513+ /// <summary>
514+ /// <inheritdoc/>
515+ /// </summary>
516+ /// <param name="disposing"></param>
517+ /// <returns></returns>
518+ protected override ValueTask DisposeAsync ( bool disposing )
519+ {
520+ if ( disposing )
521+ {
522+ _onChangeEventCallback = EventCallback < ChangeEventArgs > . Empty ;
523+ }
524+
525+ return base . DisposeAsync ( disposing ) ;
526+ }
504527}
0 commit comments