@@ -12,7 +12,7 @@ namespace BootstrapBlazor.Components;
1212/// MultiSelectGeneric component
1313/// </summary>
1414[ ExcludeFromCodeCoverage ]
15- public partial class MultiSelectGeneric < TValue >
15+ public partial class MultiSelectGeneric < TValue > : IModelEqualityComparer < TValue >
1616{
1717 private List < SelectedItem < TValue > > SelectedItems { get ; } = [ ] ;
1818
@@ -189,12 +189,30 @@ public partial class MultiSelectGeneric<TValue>
189189 [ Parameter ]
190190 public RenderFragment < SelectedItem < TValue > > ? ItemTemplate { get ; set ; }
191191
192+ /// <summary>
193+ /// 获得/设置 比较数据是否相同回调方法 默认为 null
194+ /// <para>提供此回调方法时忽略 <see cref="CustomKeyAttribute"/> 属性</para>
195+ /// </summary>
196+ [ Parameter ]
197+ public Func < TValue , TValue , bool > ? ValueEqualityComparer { get ; set ; }
198+
199+ Func < TValue , TValue , bool > ? IModelEqualityComparer < TValue > . ModelEqualityComparer
200+ {
201+ get => ValueEqualityComparer ;
202+ set => ValueEqualityComparer = value ;
203+ }
204+
205+ /// <summary>
206+ /// 获得/设置 数据主键标识标签 默认为 <see cref="KeyAttribute"/>用于判断数据主键标签,如果模型未设置主键时可使用 <see cref="ValueEqualityComparer"/> 参数自定义判断数据模型支持联合主键
207+ /// </summary>
208+ [ Parameter ]
209+ [ NotNull ]
210+ public Type ? CustomKeyAttribute { get ; set ; } = typeof ( KeyAttribute ) ;
211+
192212 [ Inject ]
193213 [ NotNull ]
194214 private IStringLocalizer < MultiSelect < TValue > > ? Localizer { get ; set ; }
195215
196- private string ? PlaceholderString => SelectedItems . Count == 0 ? PlaceHolder : null ;
197-
198216 private string ? ScrollIntoViewBehaviorString => ScrollIntoViewBehavior == ScrollIntoViewBehavior . Smooth
199217 ? null
200218 : ScrollIntoViewBehavior . ToDescriptionString ( ) ;
@@ -535,4 +553,12 @@ private void ResetSelectedItems()
535553 }
536554 }
537555 }
556+
557+ /// <summary>
558+ /// <inheritdoc/>
559+ /// </summary>
560+ /// <param name="x"></param>
561+ /// <param name="y"></param>
562+ /// <returns></returns>
563+ public bool Equals ( TValue ? x , TValue ? y ) => this . Equals < TValue > ( x , y ) ;
538564}
0 commit comments