Gridview更新更改我的更新参数?

时间:2010-10-20 17:53:53

标签: c# asp.net gridview parameters

我有一个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

发生了什么事?

1 个答案:

答案 0 :(得分:0)

将旧日期时间保存在隐藏字段中,然后在Update方法中获取时间的新值并将其替换为旧的DateTime(来自隐藏字段),然后将结果传递给数据库参数。