如何在Blazor QuickGrid中用RenderFragment引用HeaderTemplate指定HTML?
解决方案:Blazor QuickGrid PropertyColumn HeaderTemplate 正确用法
你的核心问题是错误地将HeaderTemplate当作字符串属性赋值,实际上它是RenderFragment类型的子参数,需要通过嵌套标签的方式传递内容。以下是具体修正方案:
1. 基础用法:直接在HeaderTemplate中添加HTML和样式
不需要自定义组件的情况下,直接把带样式的HTML放在<HeaderTemplate>嵌套标签内:
<QuickGrid Items="@yourDataSource"> <PropertyColumn Property="f => f.TXT_NAME" Sortable="false" Class="itemName"> <HeaderTemplate> <!-- 这里可以写任意HTML和样式 --> <span class="text-danger fst-italic fw-bold">Missouri</span> </HeaderTemplate> </PropertyColumn> </QuickGrid>
2. 结合你自定义的TemplateHeader组件使用
如果要复用你写的TemplateHeader组件,只需将其嵌套在<HeaderTemplate>内部即可:
<QuickGrid Items="@yourDataSource"> <PropertyColumn Property="f => f.TXT_NAME" Sortable="false" Class="itemName"> <HeaderTemplate> <TemplateHeader> Missouri </TemplateHeader> </HeaderTemplate> </PropertyColumn> </QuickGrid>
错误原因说明
你之前的写法HeaderTemplate="<TemplateHeader>Missouri</TemplateHeader>"是把RenderFragment参数当成了普通字符串属性,编译器会把<解析为代码中的无效符号,从而抛出An invalid expression term '<'错误。Blazor中所有RenderFragment类型的参数(比如ChildContent、HeaderTemplate)都需要通过嵌套标签的方式传递内容,而非属性赋值。
额外提示:动态绑定表头文本
如果需要动态修改表头内容,可以直接在HeaderTemplate中使用Blazor的绑定语法:
@code { private string dynamicHeader = "Missouri"; } <QuickGrid Items="@yourDataSource"> <PropertyColumn Property="f => f.TXT_NAME" Sortable="false" Class="itemName"> <HeaderTemplate> <TemplateHeader>@dynamicHeader</TemplateHeader> </HeaderTemplate> </PropertyColumn> </QuickGrid>
内容的提问来源于stack exchange,提问作者John D
相关产品推荐
相关产品推荐

