Проверьте, если EVAL («значение») является NULL
Вопрос
Довольно новое для C#
, мне нужно изменить значение, чтобы добавить минуты до даты, но это может быть нулевым.Вот как я делаю:
if(Eval("DUREE") != DBNull.Value)
{
var duration = Convert.ToInt32(Eval("DUREE"));
var date = Convert.ToDateTime(Eval("DATE"));
var dateAsString = Convert.ToString(date.AddMinutes(duration));
DataBinder.Eval(Container.DataItem, dateAsString, "{0:HH:mm}")
}
else
{
" - "
}
.
Здесь ошибка, которую я получаю:
Data datinginging: «System.data.datarowview» не создает свойства: '17 / 04/2013 13:30:00 '.
Так, проверка ложна?Или ошибка в другом месте?
Решение
Попробуйте использовать код в ASPX на месте, где вам нужна строка с датой или «-»
<%# Eval("DUREE") == DBNull.Value || Eval("DATE") == DBNull.Value
? " - "
: Convert.ToString(Convert.ToDateTime(Eval("DATE")).AddMinutes(Convert.ToInt32(Eval("DUREE")))), "{0:HH:mm}") %>
.
Проблема в вашем коде, в котором вы в DataBinder.Eval
проходят вторую строку параметра с датой, но не именем свойства.
Другие советы
Предполагая, что метод «Eval» возвращает вам значение даты в форме строки, это то, что вы пытаетесь сделать?: Генеракодицетагкод Это может быть ответ на вашу проблему для добавления минут.
Тем не менее, ошибка, которую вы получаете, кажется, указывает на другую проблему.Код, который вы разместили, кажется, в коде позади (?).Метод Convert.ToDateTime(Eval("DATE")).AddMinutes(Convert.ToDateTime(Eval("DUREE")).Minute)
обычно используется в ASPX для веб-контроля, такого как элемент управления повторителем.В этом случае вам придется пройти второй параметр для DataBinder.Eval
как имя публичного свойства.
Вы можете проверить это для Clach Click здесь
Вы можете сделать добавление минут при возврате значения свойства