@@ -391,10 +391,11 @@ internal static IEnumerable<ITableColumn> OrderFunc(this List<ITableColumn> cols
391391 /// <summary>
392392 /// RenderTreeBuilder 扩展方法 通过 IEditorItem 与 model 创建 Display 组件
393393 /// </summary>
394- /// <param name="builder"></param>
395- /// <param name="item"></param>
396- /// <param name="model"></param>
397- public static void CreateDisplayByFieldType ( this RenderTreeBuilder builder , IEditorItem item , object model )
394+ /// <param name="builder"><see cref="RenderTreeBuilder"/> 实例</param>
395+ /// <param name="item"><see cref="IEditorItem"/> 实例</param>
396+ /// <param name="model">当前模型对象实例</param>
397+ /// <param name="showTooltip">如果是 <see cref="Display{TValue}"/> 组件时是否显示提示栏 默认 false</param>
398+ public static void CreateDisplayByFieldType ( this RenderTreeBuilder builder , IEditorItem item , object model , bool showTooltip = false )
398399 {
399400 var fieldType = item . PropertyType ;
400401 var fieldName = item . GetFieldName ( ) ;
@@ -403,60 +404,80 @@ public static void CreateDisplayByFieldType(this RenderTreeBuilder builder, IEdi
403404 var type = ( Nullable . GetUnderlyingType ( fieldType ) ?? fieldType ) ;
404405 if ( type == typeof ( bool ) || fieldValue ? . GetType ( ) == typeof ( bool ) )
405406 {
406- builder . OpenComponent < Switch > ( 0 ) ;
407- builder . AddAttribute ( 10 , nameof ( Switch . Value ) , fieldValue ) ;
408- builder . AddAttribute ( 20 , nameof ( Switch . IsDisabled ) , true ) ;
409- builder . AddAttribute ( 30 , nameof ( Switch . DisplayText ) , displayName ) ;
410- builder . AddAttribute ( 40 , nameof ( Switch . ShowLabelTooltip ) , item . ShowLabelTooltip ) ;
411- if ( item is ITableColumn col )
412- {
413- builder . AddAttribute ( 50 , "class" , col . CssClass ) ;
414- }
415- builder . AddMultipleAttributes ( 60 , item . ComponentParameters ) ;
407+ builder . RenderSwitch ( item , fieldValue , displayName ) ;
416408 }
417409 else if ( item . ComponentType == typeof ( Textarea ) || item . Rows > 0 )
418410 {
419- builder . OpenComponent ( 0 , typeof ( Textarea ) ) ;
420- builder . AddAttribute ( 10 , nameof ( Textarea . DisplayText ) , displayName ) ;
421- builder . AddAttribute ( 20 , nameof ( Textarea . Value ) , fieldValue ) ;
422- builder . AddAttribute ( 30 , nameof ( Textarea . ShowLabelTooltip ) , item . ShowLabelTooltip ) ;
423- builder . AddAttribute ( 40 , "readonly" , true ) ;
424- if ( item . Rows > 0 )
425- {
426- builder . AddAttribute ( 50 , "rows" , item . Rows ) ;
427- }
428- if ( item is ITableColumn col )
429- {
430- builder . AddAttribute ( 60 , "class" , col . CssClass ) ;
431- }
432- builder . AddMultipleAttributes ( 70 , item . ComponentParameters ) ;
411+ builder . RenderTextarea ( item , fieldValue , displayName ) ;
433412 }
434413 else
435414 {
436- builder . OpenComponent ( 0 , typeof ( Display < > ) . MakeGenericType ( fieldType ) ) ;
437- builder . AddAttribute ( 10 , nameof ( Display < > . DisplayText ) , displayName ) ;
438- builder . AddAttribute ( 20 , nameof ( Display < > . Value ) , fieldValue ) ;
439- builder . AddAttribute ( 30 , nameof ( Display < > . Lookup ) , item . Lookup ) ;
440- builder . AddAttribute ( 30 , nameof ( Display < > . LookupService ) , item . LookupService ) ;
441- builder . AddAttribute ( 40 , nameof ( Display < > . LookupServiceKey ) , item . LookupServiceKey ) ;
442- builder . AddAttribute ( 50 , nameof ( Display < > . LookupServiceData ) , item . LookupServiceData ) ;
443- builder . AddAttribute ( 60 , nameof ( Display < > . LookupStringComparison ) , item . LookupStringComparison ) ;
444- builder . AddAttribute ( 65 , nameof ( Display < > . ShowLabelTooltip ) , item . ShowLabelTooltip ) ;
445- if ( item is ITableColumn col )
415+ builder . RenderDisplay ( item , fieldType , fieldValue , displayName , showTooltip ) ;
416+ }
417+ }
418+
419+ private static void RenderTextarea ( this RenderTreeBuilder builder , IEditorItem item , object ? fieldValue , string ? displayName )
420+ {
421+ builder . OpenComponent ( 0 , typeof ( Textarea ) ) ;
422+ builder . AddAttribute ( 10 , nameof ( Textarea . DisplayText ) , displayName ) ;
423+ builder . AddAttribute ( 20 , nameof ( Textarea . Value ) , fieldValue ) ;
424+ builder . AddAttribute ( 30 , nameof ( Textarea . ShowLabelTooltip ) , item . ShowLabelTooltip ) ;
425+ builder . AddAttribute ( 40 , "readonly" , true ) ;
426+
427+ if ( item . Rows > 0 )
428+ {
429+ builder . AddAttribute ( 50 , "rows" , item . Rows ) ;
430+ }
431+ if ( item is ITableColumn col )
432+ {
433+ builder . AddAttribute ( 60 , "class" , col . CssClass ) ;
434+ }
435+ builder . AddMultipleAttributes ( 70 , item . ComponentParameters ) ;
436+ builder . CloseComponent ( ) ;
437+ }
438+
439+ private static void RenderSwitch ( this RenderTreeBuilder builder , IEditorItem item , object ? fieldValue , string ? displayName )
440+ {
441+ builder . OpenComponent < Switch > ( 0 ) ;
442+ builder . AddAttribute ( 10 , nameof ( Switch . Value ) , fieldValue ) ;
443+ builder . AddAttribute ( 20 , nameof ( Switch . IsDisabled ) , true ) ;
444+ builder . AddAttribute ( 30 , nameof ( Switch . DisplayText ) , displayName ) ;
445+ builder . AddAttribute ( 40 , nameof ( Switch . ShowLabelTooltip ) , item . ShowLabelTooltip ) ;
446+
447+ if ( item is ITableColumn col )
448+ {
449+ builder . AddAttribute ( 50 , "class" , col . CssClass ) ;
450+ }
451+ builder . AddMultipleAttributes ( 60 , item . ComponentParameters ) ;
452+ builder . CloseComponent ( ) ;
453+ }
454+
455+ private static void RenderDisplay ( this RenderTreeBuilder builder , IEditorItem item , Type fieldType , object ? fieldValue , string ? displayName , bool showTooltip )
456+ {
457+ builder . OpenComponent ( 0 , typeof ( Display < > ) . MakeGenericType ( fieldType ) ) ;
458+ builder . AddAttribute ( 10 , nameof ( Display < > . DisplayText ) , displayName ) ;
459+ builder . AddAttribute ( 20 , nameof ( Display < > . Value ) , fieldValue ) ;
460+ builder . AddAttribute ( 30 , nameof ( Display < > . Lookup ) , item . Lookup ) ;
461+ builder . AddAttribute ( 30 , nameof ( Display < > . LookupService ) , item . LookupService ) ;
462+ builder . AddAttribute ( 40 , nameof ( Display < > . LookupServiceKey ) , item . LookupServiceKey ) ;
463+ builder . AddAttribute ( 50 , nameof ( Display < > . LookupServiceData ) , item . LookupServiceData ) ;
464+ builder . AddAttribute ( 60 , nameof ( Display < > . LookupStringComparison ) , item . LookupStringComparison ) ;
465+ builder . AddAttribute ( 65 , nameof ( Display < > . ShowLabelTooltip ) , item . ShowLabelTooltip ) ;
466+ builder . AddAttribute ( 66 , nameof ( Display < > . ShowTooltip ) , showTooltip ) ;
467+
468+ if ( item is ITableColumn col )
469+ {
470+ if ( col . Formatter != null )
446471 {
447- if ( col . Formatter != null )
448- {
449- builder . AddAttribute ( 70 , nameof ( Display < > . FormatterAsync ) , CacheManager . GetFormatterInvoker ( fieldType , col . Formatter ) ) ;
450- }
451- else if ( ! string . IsNullOrEmpty ( col . FormatString ) )
452- {
453- builder . AddAttribute ( 80 , nameof ( Display < > . FormatString ) , col . FormatString ) ;
454- }
455- builder . AddAttribute ( 90 , "class" , col . CssClass ) ;
472+ builder . AddAttribute ( 70 , nameof ( Display < > . FormatterAsync ) , CacheManager . GetFormatterInvoker ( fieldType , col . Formatter ) ) ;
473+ }
474+ else if ( ! string . IsNullOrEmpty ( col . FormatString ) )
475+ {
476+ builder . AddAttribute ( 80 , nameof ( Display < > . FormatString ) , col . FormatString ) ;
456477 }
457- builder . AddMultipleAttributes ( 100 , item . ComponentParameters ) ;
478+ builder . AddAttribute ( 90 , "class" , col . CssClass ) ;
458479 }
459-
480+ builder . AddMultipleAttributes ( 100 , item . ComponentParameters ) ;
460481 builder . CloseComponent ( ) ;
461482 }
462483
0 commit comments