У меня есть GridView, в котором я планирую добавлять разные цвета в каждую строку в зависимости от определенных условий.
Одним из таких условий является окрашивание строки в определенный цвет, если число в столбце 6 больше, чем число в столбце 7.
If e.Row.Cells(6).Text > e.Row.Cells(7).Text Then
e.Row.BackColor = ColorTranslator.FromHtml("#FDD533")
Else
Однако, когда я тестирую код, он, кажется, меняет цвет только тогда, когда самое левое значение в столбце 6 больше, чем в столбце 7, независимо от того факта, что столбец 6 исчисляется сотнями, а столбец 7 - тысячами.
Я считаю, что причина исходит от меня, используя text в утверждении If. Однако любой экземпляр числа, который я могу изменить, кажется, не вписывается в код:
If e.Row.Cells(6).Number > e.Row.Cells(7).Number Then
или
If e.Row.Cells(6).Integer > e.Row.Cells(7).Integer Then
Этот пример дает мне сообщение о том, что
'Number' is not a member of 'System.Web.UI.WebControls.TableCell'
Что еще я могу использовать, что совместимо с текущим кодом?





Я считаю, что вы пропускаете кастинг. Я не уверен, сравниваете ли вы только Целые числа или сложные числа, если вы не знаете, я рекомендую вам напрямую приводить к удваивается:
If Convert.ToDouble(e.Row.Cells(6).Text) > Convert.ToDouble(e.Row.Cells(7).Text) Then
e.Row.BackColor = ColorTranslator.FromHtml("#FDD533")
Else
Convert.ToDouble преобразует любой текст в число.
Подробнее о кастинге:
https://www.dotnetheaven.com/article/casting-integer-to-long-single-and-double-using-vb.net
Если у вас может быть пустые значения, вы можете использовать Попробуйте:
https://docs.microsoft.com/en-us/dotnet/visual-basic/language-reference/operators/trycast-operator
«Convert.ToDouble преобразует любой текст в число». Не совсем. Некоторые строки, конечно, не могут быть преобразованы и вызовут исключение. Вот почему существует TryParse.
Можете попробовать Convert.ToInt32(e.Row.Cells(6).Text)? Потому что я считаю, что вам не хватает только актерского состава.