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

时间:2015-02-19 20:14:35

标签: vb.net datagridview properties row

我目前正在使用VB.NET visual express 2013.我在后端使用sql数据库,并在Windows Forms中编程。我正在尝试获取一些代码,这些代码将搜索我的多列datagridview的第9列并搜索单词“tailshelf”。在这个单词之前和之后会有一堆字符但是我需要我的代码来识别这个字符串并将整行的背景颜色更改为橙​​色。我有一些我正在尝试的代码,但它给我一个错误,上面写着“System.InvaliudCastException:从字符串到整数的转换无效。”似乎它正在尝试将整数转换为字符串,但该列应设置为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

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

enter image description here

最终工作代码:

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

3 个答案:

答案 0 :(得分:0)

If CInt(dgvrow.Cells(9).Value.ToString) = "*Tailshelf*" Then

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

答案 1 :(得分:0)

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

If (dgvrow.Cells(9).ToString.Contains("Tailshelf")) Then

答案 2 :(得分:0)

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