根据单元格 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
我目前在 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