C# 是否可以在DataGridView int列中显示空字符串而不是0?

C# 是否可以在DataGridView int列中显示空字符串而不是0?,c#,datagridview,C#,Datagridview,我有一个数据表,里面有关于音轨的信息。存储曲目编号的DataTableColumn是UInt32类型,因此当我在DataGridView中显示DataTable时,我能够按该列对数据进行排序。对于没有曲目编号的曲目,我在DataTable中得到了0 data.Tables["active"].Columns["Track"].DataType = Type.GetType("System.UInt32"); 是否可以在DataGridView中将该列中的每个0显示为空字符串(无)?但仍将其作为

我有一个数据表,里面有关于音轨的信息。存储曲目编号的DataTableColumn是UInt32类型,因此当我在DataGridView中显示DataTable时,我能够按该列对数据进行排序。对于没有曲目编号的曲目,我在DataTable中得到了0

data.Tables["active"].Columns["Track"].DataType = Type.GetType("System.UInt32");

是否可以在DataGridView中将该列中的每个0显示为空字符串(无)?但仍将其作为UInt32 0存储在数据表中,以便能够对曲目进行排序?

只是一个小建议。。。使用“System.String”添加另一列,并使其值等于Track column(隐藏Track column),然后您可以在新的可见列中将0替换为空字符串

当然,您可以使用
CellFormatting
事件:

private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
    if (dataGridView1.Columns[e.ColumnIndex].DataPropertyName == "Track")
    {
        uint value = (uint)e.Value;
        if (value == 0)
        {
            e.Value = string.Empty;
            e.FormattingApplied = true;
        }
    }
}

如果其他人感兴趣,我稍微修改了代码,使其不依赖于列名:
If(dataGridView.Columns[e.ColumnIndex].ValueType==Type.GetType(“System.UInt32”)
{//Thomas's code}@joudiekjouda,您应该使用
typeof(UInt32)
而不是
Type.GetType(“System.UInt32”)
…@Thomas Levesque:线程巫术。应该可以用一个数据模板来实现这一点,对吗?如果是这样,你知道怎么做吗?@SezMe,这是WinForms,不是WPF。。。没有模板;)