Двухстороннее связывание с пользовательским выражением? - PullRequest
1 голос
/ 10 мая 2011

Я использую gridview в своем проекте asp.net для просмотра и изменения некоторых записей из базы данных.База данных имеет два столбца: start_date и end_date.Когда создается новая запись, эти столбцы содержат ноль, но их можно изменить позже с помощью команды обновления gridview.

В gridview у меня есть два поля шаблона (с именами start_date и end_date), в которые я поместил два календаря.управления.При нажатии на ссылку обновления gridview всегда возвращается ошибка из-за привязки нулевого значения к календарю.Я использовал эту вспомогательную функцию для ее решения:

protected DateTime ReplaceNull(Object param)
{
    if (param.Equals(DBNull.Value))
    {
        return DateTime.Now;
    }
    else
    {
        return Convert.ToDateTime(param);
    }
}

и использовал эти два пользовательских выражения в SelectedDate элемента управления календарем:

ReplaceNull(Eval("start_date"))
ReplaceNull(Eval("end_date"))

Проблема заключается в том, что двусторонние данные связывают календарипри выборе даты не обновляется таблица базы данных.Есть ли обходные пути?Или в качестве альтернативы, было бы желательно лучшее решение.

1 Ответ

0 голосов
/ 10 мая 2011

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

один из них : в RowDataBound событии Gridview

 protected void gv_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
               if (e.Row.Cells[1] == null) //the index of the start_date
                 {
                    e.Row.Cells[1].Text = DateTime.Now.ToString(); // in your case you will  make the selected date of the calender(through casting to calender) with the value you need.
                 }

            }
        }

или : вы можете поймать исключение, которое вы встретите в своей кнопке обновления через

try and catch block.

...