You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Telerik Grid中将布尔值替换为Active/Disable状态文本?

解决Telerik Grid中布尔值转文本显示的问题

错误原因

你尝试在GridColumn的Field属性中直接写入三元表达式是错误的——Field仅支持绑定到模型的具体属性名称,无法解析复杂表达式,这才触发了"The expression does not have a name"错误。

解决方案

提供两种可行的实现方式:


方法1:使用GridColumn的Template(推荐,无需修改模型)

直接在GridColumn内部通过Template渲染自定义内容,逻辑和你之前在HTML中使用的三元表达式一致:

<GridColumn Title="Status">
    <Template>
        @((context as MiddlewareModel).Active ? "Active" : "Disable")
    </Template>
</GridColumn>

这种方式不需要修改模型,直接在视图层处理显示逻辑,适合快速实现需求。


方法2:在模型中添加计算属性(支持排序/过滤)

如果需要对Status列进行排序或过滤,建议在MiddlewareModel中新增一个计算属性:

public class MiddlewareModel
{
    // 原有属性
    public int MiddlewareId { get; set; }
    public string Description { get; set; }
    public bool Active { get; set; }

    // 新增计算属性
    public string StatusText => Active ? "Active" : "Disable";
}

之后在GridColumn中直接绑定该属性:

<GridColumn Field="@nameof(MiddlewareModel.StatusText)" Title="Status"></GridColumn>

修改后的完整Grid代码片段

替换原有的Status列后,完整的Grid部分代码如下:

<TelerikGrid Data="middlewareHeader" Sortable="true" Pageable="true" FilterMode="GridFilterMode.FilterMenu">
    <GridToolBar>
        <GridSearchBox Placeholder="@Placeholder"
                   Width="@(SearchBoxWidth >= 100 ? SearchBoxWidth +"px" : "100px")"
                   DebounceDelay="@DebounceDelay">
        </GridSearchBox>
    </GridToolBar>
    <GridColumns>
        <GridColumn Field="@nameof(MiddlewareModel.MiddlewareId)" Title="Middleware"></GridColumn>
        <GridColumn Field="@nameof(MiddlewareModel.Description)" Title="Description"></GridColumn>
        <!-- 修改后的Status列 -->
        <GridColumn Title="Status">
            <Template>
                @((context as MiddlewareModel).Active ? "Active" : "Disable")
            </Template>
        </GridColumn>
        <GridColumn Field="@nameof(MiddlewareModel.MiddlewareId)" Title="Navigation">
            <Template>
                <TelerikButton @onclick="@(() => Navigation.NavigateTo($"/Environments/{environmentId}/Middlewares/{(context as MiddlewareModel).MiddlewareId}"))">More Information</TelerikButton>
            </Template>
        </GridColumn>
    </GridColumns>
</TelerikGrid>

额外提示

你的OnInitializedAsync方法中API地址存在字符串插值错误,需修正为:

middlewareHeader = await Http.GetFromJsonAsync<MiddlewareModel[]?>($"https://localhost:57031/api/Environments/{environmentId}/Middlewares");

内容的提问来源于stack exchange,提问作者Alberto Smith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 15:30:45