@@ -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