File tree Expand file tree Collapse file tree 2 files changed +37
-20
lines changed
src/BootstrapBlazor/Components/SelectGeneric Expand file tree Collapse file tree 2 files changed +37
-20
lines changed Original file line number Diff line number Diff line change 2323 if (ShowCloseButton )
2424 {
2525 < div class = " multi-select-item-group" >
26- < DynamicElement TagName = " span" class = " multi-select-close"
26+ < DynamicElement TagName = " span" class = " multi-select-close" data - bb - val = " @GetValueString(item) "
2727 TriggerClick = " @(!IsPopover)" OnClick = " () => ToggleRow(item)" >
2828 < i class = " @CloseButtonIcon" >< / i >
2929 < / DynamicElement >
127127
128128@code {
129129 RenderFragment <SelectedItem <TValue >> RenderRow => item =>
130- @< DynamicElement OnClick = " () => ToggleRow (item)" TriggerClick = " @CheckCanTrigger(item)" class = " @GetItemClassString(item)" >
130+ @< DynamicElement OnClick = " () => ToggleItem (item)" TriggerClick = " @CheckCanTrigger(item)" class = " @GetItemClassString(item)" >
131131 < div class = " multi-select-item" >
132132 < div class = " form-check" >
133133 < input class = " form-check-input" type = " checkbox" disabled = " @CheckCanSelect(item)" checked = " @GetCheckedString(item)" / >
Original file line number Diff line number Diff line change @@ -385,7 +385,7 @@ public async Task ConfirmSelectedItem(int index)
385385 var rows = Rows ;
386386 if ( index < rows . Count )
387387 {
388- await ToggleRow ( rows [ index ] ) ;
388+ await ToggleItem ( rows [ index ] ) ;
389389 StateHasChanged ( ) ;
390390 }
391391 }
@@ -395,28 +395,45 @@ public async Task ConfirmSelectedItem(int index)
395395 /// </summary>
396396 /// <returns></returns>
397397 [ JSInvokable ]
398- public async Task ToggleRow ( SelectedItem < TValue > val )
398+ public async Task ToggleRow ( string val )
399399 {
400- if ( ! IsDisabled )
400+ if ( int . TryParse ( val , out var index ) && index >= 0 && index < SelectedItems . Count )
401401 {
402- var item = SelectedItems . FirstOrDefault ( i => Equals ( i . Value , val . Value ) ) ;
403- if ( item != null )
404- {
405- SelectedItems . Remove ( item ) ;
406- }
407- else
402+ var item = SelectedItems [ index ] ;
403+ await ToggleRow ( item ) ;
404+ }
405+ }
406+
407+ private async Task ToggleRow ( SelectedItem < TValue > item )
408+ {
409+ SelectedItems . Remove ( item ) ;
410+
411+ _isToggle = true ;
412+ // 更新选中值
413+ await SetValue ( ) ;
414+ }
415+
416+ private string ? GetValueString ( SelectedItem < TValue > item ) => IsPopover ? SelectedItems . IndexOf ( item ) . ToString ( ) : null ;
417+
418+ private async Task ToggleItem ( SelectedItem < TValue > val )
419+ {
420+ var item = SelectedItems . FirstOrDefault ( i => Equals ( i . Value , val . Value ) ) ;
421+ if ( item != null )
422+ {
423+ SelectedItems . Remove ( item ) ;
424+ }
425+ else
426+ {
427+ var d = Rows . FirstOrDefault ( i => Equals ( i . Value , val . Value ) ) ;
428+ if ( d != null )
408429 {
409- var d = Rows . FirstOrDefault ( i => Equals ( i . Value , val . Value ) ) ;
410- if ( d != null )
411- {
412- SelectedItems . Add ( d ) ;
413- }
430+ SelectedItems . Add ( d ) ;
414431 }
415-
416- _isToggle = true ;
417- // 更新选中值
418- await SetValue ( ) ;
419432 }
433+
434+ _isToggle = true ;
435+ // 更新选中值
436+ await SetValue ( ) ;
420437 }
421438
422439 private int _min ;
You can’t perform that action at this time.
0 commit comments