如何屏蔽 datagridview 中的特定列?

How to you mask a specific column in datagridview?

ProductPrice     Stocks     Category
12.0             0          Drinks
50.0             0          Drinks
30.0             0          Drinks
45.0             12         Food
50.0             10         Food
60.0             15         Food

这是我的数据网格 table。 我想把 0 改成 n/a.

但问题是 Stocks 数据类型在数据库中设置为整数。 是否有任何功能可以屏蔽特定列,例如将 0 更改为 n/a?

我找到了一些“几乎”的解决方案,但它将整个列更改为 n/a,而不是 0。 我也尝试过将列值更改为 = n/a 但错误总是说无法将 int 转换为字符串。

谁能帮帮我?

我刚刚在未绑定的 DataGridView 中对此进行了测试,它按预期工作:

Private Sub DataGridView1_CellFormatting(sender As Object, e As DataGridViewCellFormattingEventArgs) Handles DataGridView1.CellFormatting
    If e.ColumnIndex = 1 Then
        If TypeOf e.Value Is String AndAlso CStr(e.Value) = "0" Then
            e.Value = "N/A"
            e.FormattingApplied = True
        End If
    End If
End Sub

请注意,该代码首先测试列索引,并且仅当正在格式化的单元格位于感兴趣的特定列中时才会继续。如果您不这样做,那么每列中的单元格当然都会受到影响。您需要过滤所需列的索引。如果 Stocks 是第二列,那么索引将为 1,就像在我的示例中一样。如果不是,则需要更改它。

此代码查找 String 值,因为输入未绑定网格的所有内容都是 String。如果您已将网格绑定到实际包含数字的数据源,那么您应该寻找合适的数字类型。在这种情况下,这大概是 Integer,所以你会想要这样的东西:

If TypeOf e.Value Is Integer AndAlso CInt(e.Value) = 0 Then