У меня есть этот бит кода:
// Do comparisons for highlighting
if (cellNum == reader.GetOrdinal("MTD Carryover"))
{
tempCell.Width = 155;
if (reader.GetInt32(reader.GetOrdinal("MTD Carryover")) < 0)
{
tempCell.Attributes.Add("class", tempCell.Attributes["class"] + " " + "RedBackground");
}
else
{
tempCell.Attributes.Add("class", tempCell.Attributes["class"] + " " + "GreenBackground");
}
// Test for yellow last, MTD Carrover - 10% but still less than 0
if (reader.GetInt32(reader.GetOrdinal("MTD Carryover")) > (reader.GetInt32(reader.GetOrdinal("MTD
Carryover")) - (reader.GetInt32(reader.GetOrdinal("MTD Carryover")) * .1))
&& (reader.GetInt32(reader.GetOrdinal("MTD Carryover")) > 0))
{
tempCell.Attributes.Add("class", tempCell.Attributes["class"] + " " + "YellowBackground");
}
}
Я хочу сравнить значение столбца SqlDataReader
, чтобы увидеть, если оно меньше 0. Если это так, я хочу сделать фон зеленым Если нет, я хочу сделать его красным. Если оно находится в пределах 10% от 0, но не больше 0, я хочу сделать его желтым.
Я думал, это сработало. Однако, когда я использую флажок, который перезагружает страницу с параметром URL, я получаю следующую ошибку:
Данные равны нулю. Этот метод или свойство нельзя вызывать для значений Null. Описание: во время выполнения текущего веб-запроса произошло необработанное исключение. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.
Сведения об исключении: System.Data.SqlTypes.SqlNullValueException: Data is Null. Этот метод или свойство нельзя вызывать для значений Null.
Я подтвердил, что проблема заключается в удалении кода и использовании флажка и перезагрузке страницы, что этот конкретный бит кода и 0 - это моя настоящая проблема. Я использую тот же код в других столбцах для сравнения с другими значениями SqlDataReader
, и это работает. Это единственная область, где мне нужно сравнить что-то вне потока SqlDataReader
.
Я не уверен, как правильно сравнить значение из потока SqlDataReader
с 0. Я пробовал создаю переменную Int32 и устанавливаю ее равной 0 для сравнения, но я получаю тот же результат.
// Used in the SqlDataReader compare below for column highlighting
Int32 compareMTDCarryover = 0;
Я относительно новичок в C# и интенсивно использую StackOverflow на моем первом полноценном веб-сайте. Кажется, я не могу найти ответ на этот вопрос. Любая помощь приветствуется.