#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