Skip to content

Commit 314acb0

Browse files
committed
feat: 增加 DefaultVirtualizeItemText 方法
1 parent 9c752c8 commit 314acb0

File tree

1 file changed

+29
-5
lines changed

1 file changed

+29
-5
lines changed

src/BootstrapBlazor/Components/Select/MultiSelect.razor.cs

Lines changed: 29 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,12 @@ public partial class MultiSelect<TValue>
112112
[Parameter]
113113
public Func<IEnumerable<SelectedItem>, Task>? OnSelectedItemsChanged { get; set; }
114114

115+
/// <summary>
116+
/// Gets or sets the default virtualize items text.
117+
/// </summary>
118+
[Parameter]
119+
public string? DefaultVirtualizeItemText { get; set; }
120+
115121
/// <summary>
116122
/// 获得/设置 全选按钮显示文本
117123
/// </summary>
@@ -158,6 +164,7 @@ public partial class MultiSelect<TValue>
158164
[Parameter]
159165
[NotNull]
160166
public string? MinErrorMessage { get; set; }
167+
161168
[Inject]
162169
[NotNull]
163170
private IStringLocalizer<MultiSelect<TValue>>? Localizer { get; set; }
@@ -167,7 +174,7 @@ public partial class MultiSelect<TValue>
167174
private string? ScrollIntoViewBehaviorString => ScrollIntoViewBehavior == ScrollIntoViewBehavior.Smooth ? null : ScrollIntoViewBehavior.ToDescriptionString();
168175

169176
/// <summary>
170-
/// OnParametersSet 方法
177+
/// <inheritdoc/>
171178
/// </summary>
172179
protected override void OnParametersSet()
173180
{
@@ -195,15 +202,15 @@ protected override void OnParametersSet()
195202
if (_lastSelectedValueString != _currentValue)
196203
{
197204
_lastSelectedValueString = _currentValue;
198-
var list = _currentValue.Split(',', StringSplitOptions.RemoveEmptyEntries);
199205

200206
SelectedItems.Clear();
201207
if (IsVirtualize)
202208
{
203-
SelectedItems.AddRange(list.Select(i => new SelectedItem(i, i)));
209+
SelectedItems.AddRange(GetItemsByVirtualize());
204210
}
205211
else
206212
{
213+
var list = _currentValue.Split(',', StringSplitOptions.RemoveEmptyEntries);
207214
SelectedItems.AddRange(Rows.Where(item => list.Any(i => i.Trim() == item.Value)));
208215
}
209216
}
@@ -232,6 +239,23 @@ protected override void OnAfterRender(bool firstRender)
232239
ToggleRow = nameof(ToggleRow)
233240
});
234241

242+
private List<SelectedItem> GetItemsByVirtualize()
243+
{
244+
var ret = new List<SelectedItem>();
245+
var texts = new List<string>();
246+
if (!string.IsNullOrEmpty(DefaultVirtualizeItemText))
247+
{
248+
texts.AddRange(DefaultVirtualizeItemText.Split(',', StringSplitOptions.RemoveEmptyEntries));
249+
}
250+
var values = CurrentValueAsString.Split(',', StringSplitOptions.RemoveEmptyEntries).ToList();
251+
for (int i = 0; i < values.Count; i++)
252+
{
253+
var text = i < texts.Count ? texts[i] : values[i];
254+
ret.Add(new SelectedItem(values[i], text));
255+
}
256+
return ret;
257+
}
258+
235259
private int _totalCount;
236260
private ItemsProviderResult<SelectedItem> _result;
237261

@@ -265,7 +289,7 @@ protected override async Task OnClearValue()
265289
}
266290

267291
/// <summary>
268-
/// FormatValueAsString 方法
292+
/// <inheritdoc/>
269293
/// </summary>
270294
/// <param name="value"></param>
271295
/// <returns></returns>
@@ -350,7 +374,7 @@ public async Task<bool> TriggerEditTag(string val)
350374
val = val.Trim();
351375
if (OnEditCallback != null)
352376
{
353-
ret = await OnEditCallback.Invoke(val);
377+
ret = await OnEditCallback(val);
354378
}
355379
else if (!string.IsNullOrEmpty(val))
356380
{

0 commit comments

Comments
 (0)