我有一个Gridview,我可以在其中修改DateTime字段的Time部分。更新方法运行良好,除了一件事:
该字段应仅允许时间部分,例如08:23:09
,但在数据库上,它将其保存为完整的DateTime,例如10/18/2010 08:23:09 AM
。问题是在编辑时,它不添加现有的Date部分,而是添加当前的Date部分。因此,如果我将上一个示例中的项目编辑为08:25:09
而不是将其添加为10/18/2010 08:25:09 AM
,则会将其添加为10/20/2010 08:25:09 AM
,这显然是不受欢迎的行为。
以下是我正在进行更新的方式:
protected void grvOutHour_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
GridView grvOutHour = (GridView)this.grvReport.Rows[grvReport.EditIndex].FindControl("grvOutHour");
TextBox txtBox = (TextBox) grvOutHour.Rows[e.RowIndex].FindControl("txtEditOutHour");
string outHour = this.Source[grvReport.EditIndex].EntryDate + " " + txtBox.Text;
odsOutHours.UpdateParameters["OutHour"].DefaultValue = outHour;
}
到目前为止,outHour
的值是所需的值,例如10/18/2010 08:25:09 AM
,但只要将值传递给我的实际Update方法:
public static void UpdateHour(int pEntryID, DateTime InHour, DateTime OutHour)
{
Hour hour = HoursDataMng.GetEntity(pEntryID, InHour.Date, InHour.TimeOfDay);
if (hour == null)
return;
else
{
hour.OutHour = OutHour;
HoursDataMng.SubmitChanges();
}
}
我可以看到OutHour已更改为10/20/2010 08:25:09 AM
发生了什么事?
答案 0 :(得分:0)
将旧日期时间保存在隐藏字段中,然后在Update方法中获取时间的新值并将其替换为旧的DateTime(来自隐藏字段),然后将结果传递给数据库参数。