代码之家  ›  专栏  ›  技术社区  ›  limelatte

如何在datagridview中屏蔽特定列?

  •  0
  • limelatte  · 技术社区  · 2 年前
    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
    

    这是我的datagrid表。 我想将0更改为不适用。

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

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

    有人能帮我吗?

    1 回复  |  直到 2 年前
        1
  •  0
  •   John    2 年前

    我只是在一个未绑定的 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 值,因为输入到未绑定网格中的所有内容都将是 一串 。如果您已将网格绑定到实际包含数字的数据源,则应查找适当的数字类型。考虑到这种情况,这大概是正确的 Integer ,所以你会想要这样的东西:

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