我在我的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"))
问题是在选择日期时绑定日历的双向数据不会更新数据库表。有没有解决方法?或者,可以选择更好的解决方案。
答案 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
。