diff --git a/src/BootstrapBlazor/Components/SelectGeneric/MultiSelectGeneric.razor b/src/BootstrapBlazor/Components/SelectGeneric/MultiSelectGeneric.razor index e4bee4b6d88..dcc2efdf595 100644 --- a/src/BootstrapBlazor/Components/SelectGeneric/MultiSelectGeneric.razor +++ b/src/BootstrapBlazor/Components/SelectGeneric/MultiSelectGeneric.razor @@ -23,7 +23,7 @@ if (ShowCloseButton) {
- @@ -127,7 +127,7 @@ @code { RenderFragment> RenderRow => item => - @ + @
diff --git a/src/BootstrapBlazor/Components/SelectGeneric/MultiSelectGeneric.razor.cs b/src/BootstrapBlazor/Components/SelectGeneric/MultiSelectGeneric.razor.cs index 734a5baeb29..3760f39491b 100644 --- a/src/BootstrapBlazor/Components/SelectGeneric/MultiSelectGeneric.razor.cs +++ b/src/BootstrapBlazor/Components/SelectGeneric/MultiSelectGeneric.razor.cs @@ -385,7 +385,7 @@ public async Task ConfirmSelectedItem(int index) var rows = Rows; if (index < rows.Count) { - await ToggleRow(rows[index]); + await ToggleItem(rows[index]); StateHasChanged(); } } @@ -395,28 +395,45 @@ public async Task ConfirmSelectedItem(int index) /// /// [JSInvokable] - public async Task ToggleRow(SelectedItem val) + public async Task ToggleRow(string val) { - if (!IsDisabled) + if (int.TryParse(val, out var index) && index >= 0 && index < SelectedItems.Count) { - var item = SelectedItems.FirstOrDefault(i => Equals(i.Value, val.Value)); - if (item != null) - { - SelectedItems.Remove(item); - } - else + var item = SelectedItems[index]; + await ToggleRow(item); + } + } + + private async Task ToggleRow(SelectedItem item) + { + SelectedItems.Remove(item); + + _isToggle = true; + // 更新选中值 + await SetValue(); + } + + private string? GetValueString(SelectedItem item) => IsPopover ? SelectedItems.IndexOf(item).ToString() : null; + + private async Task ToggleItem(SelectedItem val) + { + var item = SelectedItems.FirstOrDefault(i => Equals(i.Value, val.Value)); + if (item != null) + { + SelectedItems.Remove(item); + } + else + { + var d = Rows.FirstOrDefault(i => Equals(i.Value, val.Value)); + if (d != null) { - var d = Rows.FirstOrDefault(i => Equals(i.Value, val.Value)); - if (d != null) - { - SelectedItems.Add(d); - } + SelectedItems.Add(d); } - - _isToggle = true; - // 更新选中值 - await SetValue(); } + + _isToggle = true; + // 更新选中值 + await SetValue(); } private int _min;