Больше и меньше, чем в столбце в Datagridview VB.Net

#vb.net #datagridview

#vb.net #datagridview

Вопрос:

У меня есть 3 столбца в datagridview, давайте назовем это столбцом 0 , 1 2 и вот как это выглядит.

введите описание изображения здесь

Мой вопрос в том, как я могу сделать так, чтобы столбец 0 стал оранжевым, когда столбец 2 больше столбца 1 ? Например Banana Catsup 4 kg , столбец 2 имеет значение a 5 , а столбец 1 больше столбца 2 , поэтому в этом случае столбец 0 не станет оранжевым, но в моем примере он становится оранжевым. Вот мой код

 Try
For i As Integer = DataGridView1.RowCount - 1 To 3 Step -1
If DataGridView1.Rows(i).Cells(1).Value > DataGridView1.Rows(i).Cells(2).Value Then
Me.DataGridView1.Rows(i).Cells(1).Style.BackColor = Color.Orange
End If
Next
Catch
End Try
  

Когда я наблюдаю за своим кодом, кажется, что мой код работает только с первым числом. Пожалуйста, помогите мне

Тысяч

Комментарии:

1. К какому методу относится этот код? Почему цикл от RowCount -1 до 3, а не от 0 до RowCount -1? Вы пробовали DataGridView1.Refresh() после цикла?

Ответ №1:

Зачем усложнять ситуацию, когда вы можете просто сделать это так?

     Try
        For i = 0 To DataGridView1.RowCount - 1
            If Val(DataGridView1.Rows(i).Cells(1).Value.ToString) > Val(DataGridView1.Rows(i).Cells(2).Value.ToString) Then
                Me.DataGridView1.Rows(i).Cells(0).Style.BackColor = Color.Orange
            End If
        Next
    Catch ex As Exception
        MsgBox(ex.Message)
    End Try
  

Кроме того, наличие пустого catch значения рано или поздно вызовет у вас проблемы.

Добавлено Val() в ячейки, чтобы убедиться, что это не вызовет никаких проблем, если оно пустое.

Комментарии:

1. Вы всегда готовы помочь мне, сэр, сэр

2. Извините за поздний ответ, который только что закончил мою встречу

3. Просто попробовал код еще раз, сэр, но все тот же результат: (

4. Нет, сэр, я пробовал, не думаете ли вы, что сэр тип столбца столбца столбца mysql повлияет на них столбцы с числами являются десятичными (10,2) в моей таблице

5. Я думаю, сэр, что теперь это работает, я попытался настроить другие свои коды. Всегда прошу помощи, сэр: D

Ответ №2:

Вы сравниваете два строковых значения. Сначала вам нужно преобразовать значения col1 и col2 в INT, а затем сравнить.

    Try
For i As Integer = DataGridView1.RowCount - 1 To 3 Step -1
If CInt(Replace(DataGridView1.Rows(i).Cells(1).Value,",","")) > CInt(Replace(DataGridView1.Rows(i).Cells(2).Value,",","")) Then
Me.DataGridView1.Rows(i).Cells(1).Style.BackColor = Color.Orange
End If
Next
Catch
End Try