双向绑定自定义表达式?

时间:2011-05-10 08:55:26

标签: asp.net data-binding null calendar dbnull

我在我的asp.net项目中使用gridview来查看和修改数据库中的一些记录。该数据库有两列:start_date和end_date。创建新记录时,这些列包含null,但稍后可以使用gridview update命令修改它们。

在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 :(得分:0)

我不知道为什么在插入新记录时让它们为空,但我认为你可以用很多方法解决这个问题。

其中一个:在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