Skip to content

Commit f66e612

Browse files
committed
feat: 支持 LookupService 服务
1 parent bcc5b73 commit f66e612

File tree

1 file changed

+12
-13
lines changed

1 file changed

+12
-13
lines changed

src/BootstrapBlazor/Utils/Utility.cs

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -469,8 +469,7 @@ public static void CreateComponentByFieldType(this RenderTreeBuilder builder, Co
469469
var fieldValue = GenerateValue(model, fieldName);
470470
var fieldValueChanged = GenerateValueChanged(component, model, fieldName, fieldType);
471471
var valueExpression = GenerateValueExpression(model, fieldName, fieldType);
472-
var lookup = item.Lookup;
473-
var componentType = item.ComponentType ?? GenerateComponentType(fieldType, item.Rows != 0, lookup);
472+
var componentType = item.ComponentType ?? GenerateComponentType(item);
474473
builder.OpenComponent(0, componentType);
475474
if (componentType.IsSubclassOf(typeof(ValidateBase<>).MakeGenericType(fieldType)))
476475
{
@@ -514,20 +513,22 @@ public static void CreateComponentByFieldType(this RenderTreeBuilder builder, Co
514513
}
515514

516515
// Nullable<bool?>
517-
if (item.ComponentType == typeof(Select<bool?>) && fieldType == typeof(bool?) && lookup == null && item.Items == null)
516+
if (item.ComponentType == typeof(Select<bool?>) && fieldType == typeof(bool?) && !item.IsLookup() && item.Items == null)
518517
{
519518
builder.AddAttribute(100, nameof(Select<bool?>.Items), GetNullableBoolItems(model, fieldName));
520519
}
521520

522521
// Lookup
523-
if (lookup != null && item.Items == null)
522+
if (item.IsLookup() && item.Items == null)
524523
{
525524
builder.AddAttribute(110, nameof(Select<SelectedItem>.ShowSearch), item.ShowSearchWhenSelect);
526-
builder.AddAttribute(120, nameof(Select<SelectedItem>.Items), lookup.Clone());
525+
builder.AddAttribute(120, nameof(Select<SelectedItem>.LookupService), item.LookupService);
526+
builder.AddAttribute(121, nameof(Select<SelectedItem>.LookupServiceKey), item.LookupServiceKey);
527+
builder.AddAttribute(122, nameof(Select<SelectedItem>.LookupServiceData), item.LookupServiceData);
527528
builder.AddAttribute(130, nameof(Select<SelectedItem>.StringComparison), item.LookupStringComparison);
528529
}
529530

530-
// 增加非枚举类,手动设定 ComponentType 为 Select 并且 Data 有值 自动生成下拉框
531+
// 增加非枚举类,手动设定 ComponentType 为 Select 并且 Items 有值 自动生成下拉框
531532
if (item.Items != null && item.ComponentType == typeof(Select<>).MakeGenericType(fieldType))
532533
{
533534
builder.AddAttribute(140, nameof(Select<SelectedItem>.Items), item.Items.Clone());
@@ -616,15 +617,13 @@ object ComplexPropertyValueExpression()
616617
/// <summary>
617618
/// 通过指定类型生成组件类型
618619
/// </summary>
619-
/// <param name="fieldType"></param>
620-
/// <param name="hasRows">是否为 TextArea 组件</param>
621-
/// <param name="lookup"></param>
622-
/// <returns></returns>
623-
private static Type GenerateComponentType(Type fieldType, bool hasRows, IEnumerable<SelectedItem>? lookup)
620+
/// <param name="item"></param>
621+
private static Type GenerateComponentType(IEditorItem item)
624622
{
623+
var fieldType = item.PropertyType;
625624
Type? ret = null;
626625
var type = (Nullable.GetUnderlyingType(fieldType) ?? fieldType);
627-
if (type.IsEnum || lookup != null)
626+
if (type.IsEnum || item.IsLookup())
628627
{
629628
ret = typeof(Select<>).MakeGenericType(fieldType);
630629
}
@@ -650,7 +649,7 @@ private static Type GenerateComponentType(Type fieldType, bool hasRows, IEnumera
650649
}
651650
else if (fieldType == typeof(string))
652651
{
653-
ret = hasRows ? typeof(Textarea) : typeof(BootstrapInput<>).MakeGenericType(typeof(string));
652+
ret = item.Rows > 0 ? typeof(Textarea) : typeof(BootstrapInput<>).MakeGenericType(typeof(string));
654653
}
655654
return ret ?? typeof(BootstrapInput<>).MakeGenericType(fieldType);
656655
}

0 commit comments

Comments
 (0)