Member 13321249 Ответов: 1

Как установить значение строки datagridview на основе другой строки


Цитата:
У меня была эта проблема в строке datagridview, где у меня есть 3 столбца. Данные Datagridview загружаются из запроса в vb.net-да. Ниже приведен сценарий:

Колонка1 Колонка2 Колонка3
3 75 3
3 76 3
3 IP 0
3 NFE 0

Если "Столбец2" клеток содержит "IP" или "БЭ", "Столбец3" значение "0", но
Если ячейки "Column2" содержат "75" или "76", то значение "Column3" равно "Column1"

Я получил этот код, где я использовал "для каждого" цикла;

Но грустно отметить, что возвращает мне эту ошибку;

"Преобразование из строки "IP" в тип "Double" недопустимо."

Пожалуйста, помогите мне с этой проблемой, спасибо.



Что я уже пробовал:

Private Sub DGVGRADES_CellValueChanged(sender As Object, e As DataGridViewCellEventArgs) Handles DGVGRADES.CellValueChanged
        For Each row As DataGridViewRow In DGVGRADES.Rows
            If row.Cells(4).Value >= 75 Then
                row.Cells(0).Value = row.Cells(3).Value
            ElseIf row.Cells(4).Value.ToString <= 3 Then
                row.Cells(0).Value = row.Cells(3).Value
            ElseIf row.Cells(4).Value < 75 Then
                row.Cells(0).Value = 0
            ElseIf row.Cells(4).Value = "IP" Then
                row.Cells(0).Value = 0
            End If
        Next
    End Sub

A_Griffin

Почему ваши ячейки(X) в вашем коде колеблются от 0 до 4, Когда у вас есть только 3 столбца - так должно быть только от 0 до 2?

1 Ответов

Рейтинг:
1

Maciej Los

Сообщение об ошибке вполне очевидно... Это означает, что ваш DataGridViewColumn[^] принимает только числовые данные, но исходные данные содержат текстовые данные.
У вас есть 2 варианта:


  1. измените datatable на запрос linq, который будет возвращать правильные типы данных
    Видеть: Запросы в LINQ to DataSet | Microsoft Docs[^]
  2. или
  3. используйте различные события DataGridView, чтобы иметь возможность обрабатывать нечисловые данные
    Видеть: Практическое руководство.Событие RowPrePaint[^]