В настоящее время я работаю в Visual Express 2013 VB.NET. Я использую базу данных sql на моем сервере и программирую в Windows Forms. Я пытаюсь получить код, который будет искать столбец 9 моего представления данных с несколькими столбцами и искать слово «хвостовая полка». Перед этим словом и после него будет несколько символов, но мне нужен мой код, чтобы распознать эту строку и изменить цвет фона всей строки на оранжевый. У меня есть код, который я пытаюсь выполнить, но он выдает ошибку, в которой говорится: «System.InvaliudCastException: преобразование строки в целое число недопустимо». Похоже, он говорит, что пытается преобразовать целое число в строку, но этот столбец должен быть настроен как тип данных varchar. Вот мой код: Private Sub DGVSchedule_RowPostPaint (отправитель как объект, e как 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
-1
Cheddar 19 Фев 2015 в 23:14

3 ответа

Лучший ответ
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
0
HaveNoDisplayName 19 Фев 2015 в 21:44

Используйте это, если хотите попробовать поискать это слово Tailshelf в индексе столбца 9.

If (dgvrow.Cells(9).ToString.Contains("Tailshelf")) Then
0
HaveNoDisplayName 19 Фев 2015 в 20:31
If CInt(dgvrow.Cells(9).Value.ToString) = "*Tailshelf*" Then

Прочтите эту строку кода, ваша проблема в этом. Вы берете dgvrow.Cells (9) .Value, конвертируете его в строку, а затем конвертируете результат в целое число. Затем вы пытаетесь сравнить целочисленное значение с " Tailshelf ". Вероятно, у вас есть правильный индекс ячейки, и допустим, что значение в dgvrow.Cells (9) на самом деле является «Tailshelf». CInt ("Tailshelf") потерпит неудачу. Удалите целочисленное преобразование.

0
Dimitri 19 Фев 2015 в 20:21