根据单元格 VB.NET 中的字符串更改 datagridview 中的行 属性

Change row property in datagridview based on string from cell, VB.NET

我目前在 VB.NET visual express 2013 工作。我在后端使用 sql 数据库,并在 Windows 表单中编程。我正在尝试获取一些代码来搜索我的多列 datagridview 的第 9 列并搜索单词 "tailshelf." 这个单词前后会有一堆字符,但我需要我的代码来识别这个字符串并更改整行的背景颜色为橙色。我有一些正在尝试的代码,但它向我抛出一个错误,上面写着 "System.InvaliudCastException: Conversion from string to type integer is not valid." 似乎是在说它正在尝试将整数转换为字符串,但该列应设置为 varchar 数据类型。这是我的代码: Private Sub DGVSchedule_RowPostPaint(sender As Object, e As DataGridViewRowPostPaintEventArgs) 句柄 DGVSchedule.RowPostPaint

    Try

        'change row color to look for tailshelf
        If e.RowIndex < Me.DGVSchedule.RowCount - 1 Then
            Dim dgvrow As DataGridViewRow = Me.DGVSchedule.Rows(e.RowIndex)

            If dgvrow.Cells(9).ToString.Contains("Tailshelf") Then
                dgvrow.DefaultCellStyle.BackColor = Color.Orange
            Else
                dgvrow.DefaultCellStyle.BackColor() = Color.White
            End If

        End If


    Catch ex As Exception
        MsgBox(ex.ToString)
    End Try
End Sub

这是我正在寻找的字符串的图片:

最终工作代码:

With DGV1
        For gridrow As Integer = 0 To .RowCount - 1
            If .Rows(gridrow).Cells(9).Value.ToString.Contains("String") Then
                .Rows(gridrow).DefaultCellStyle.BackColor = Color.Orange
            End If
        Next
    End With
If CInt(dgvrow.Cells(9).Value.ToString) = "*Tailshelf*" Then

阅读那行代码,你的问题就出在这里。您正在获取 dgvrow.Cells(9).Value,将其转换为字符串,然后将其结果转换为整数。然后您试图将一个整数值与“Tailshelf”进行比较。可能您有正确的单元格索引,假设 dgvrow.Cells(9) 中的值实际上是 "Tailshelf." CInt("Tailshelf") 将会失败。删除整数转换。

如果您想尝试在列索引 9 中搜索这个词 Tailshelf,请使用此选项。

If (dgvrow.Cells(9).ToString.Contains("Tailshelf")) Then
With DGVSchedule
        For gridrow As Integer = 0 To .RowCount - 1
            If .Rows(gridrow).Cells(9).Value.ToString.Contains("TAILSHELF") Then
                .Rows(gridrow).DefaultCellStyle.BackColor = Color.Orange
            End If
        Next
    End With