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