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

如何在Blazor DevExpress DataGridColumn中设置decimal?类型Field,空值显示“-”

解决Blazor中DxDataGridColumn显示decimal?类型空值为“-”的问题

错误原因

你之前的代码核心问题是错误地将表达式放入nameof()中——nameof()的作用是获取变量/属性的标识符名称,不能处理条件判断、字符串转换这类逻辑,这直接导致了Visual Studio报错。

两种可行解决方案

方案1:使用DisplayTemplate自定义显示逻辑(推荐)

通过DxDataGridColumn的DisplayTemplate模板,直接控制该列的显示内容,同时保留原始字段的绑定(支持排序、过滤等数据操作):

<DxDataGridColumn Field="@nameof(DataDTO.EventDefaultValue)" Caption="默认值">
    <DisplayTemplate>
        @{
            // context自动获取当前行的EventDefaultValue值
            var decimalValue = (decimal?)context;
            @(decimalValue.HasValue ? decimalValue.Value.ToString("F2") : "-")
        }
    </DisplayTemplate>
</DxDataGridColumn>

方案2:在DTO中新增计算属性

如果多个地方需要相同的显示逻辑,可以在DataDTO类中添加一个计算属性,封装格式化逻辑:

public class DataDTO
{
    public decimal? EventDefaultValue { get; set; }

    // 新增计算属性,返回格式化后的字符串
    public string EventDefaultValueDisplay
    {
        get
        {
            return EventDefaultValue.HasValue ? EventDefaultValue.Value.ToString("F2") : "-";
        }
    }
}

然后在Blazor组件中绑定这个计算属性:

<DxDataGridColumn Field="@nameof(DataDTO.EventDefaultValueDisplay)" Caption="默认值" />

注意:此方案下,列的排序、过滤会基于字符串而非原始数值,若需要数值相关的数据操作,优先选方案1。

内容的提问来源于stack exchange,提问作者Lucas Mikó

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 14:35:20