正在尝试更新记录,但更新代码只更新其中一个时间戳字段,而不更新其他字段
本文关键字:更新 字段 一个 时间戳 其他 新记录 代码 | 更新日期: 2023-09-27 18:25:35
我有一个数据库表,需要更新上面的记录。添加新记录的代码工作得很好,但当我更新现有记录时,并不是所有字段都会用表单中的新信息更新。
这是代码:
private void updateExistingDSN()
{
//Update existing DSN
try
{
using (PathFinderDataContext pfdcContext = new PathFinderDataContext())
{
DSN oldDSN = pfdcContext.DSNs.Single(dsn => dsn.DSNID == int.Parse(Request["dsn"]));
oldDSN.Auth_AuthorizationID = int.Parse(Request["auth"]);
oldDSN.ServiceProvided_ServiceProvidedID = int.Parse(Request["sp"]);
oldDSN.EvidenceBPMU = short.Parse(ddlEvidenceBPMU.SelectedValue);
oldDSN.LocationOfVisit = txtLocationOfVisit.Text;
oldDSN.ChildrenPresent = txtNamesOfChildrenPresent.Text;
oldDSN.ParentPresent = txtNamesOfParentsPresent.Text;
oldDSN.OthersPresent = txtNamesOfOthersPresent.Text;
oldDSN.DescribeGoals = txtDescribeGoals.Text;
oldDSN.DescribeStrategy = txtDescribeStrategies.Text;
oldDSN.DescibeParentingSkills = txtDescribeParentingSkills.Text;
oldDSN.DescribeSafetyConcerns = txtDescribeSafetyConcerns.Text;
oldDSN.OtherInfo = txtOtherInfo.Text;
oldDSN.Schedule_Monday = float.Parse(txtMonday.Text);
oldDSN.Schedule_Tuesday = float.Parse(txtTuesday.Text);
oldDSN.Schedule_Wednesday = float.Parse(txtWednesday.Text);
oldDSN.Schedule_Thursday = float.Parse(txtThursday.Text);
oldDSN.Schedule_Friday = float.Parse(txtFriday.Text);
oldDSN.Schedule_Saturday = float.Parse(txtSaturday.Text);
oldDSN.Schedule_Sunday = float.Parse(txtSunday.Text);
oldDSN.DateSaved = DateTime.Now;
oldDSN.SavedBy_UserID = currentEmployee.EmployeeID;
pfdcContext.SubmitChanges();
}
Response.Redirect("~/pages/updateTimesheet.aspx?action=update&ProvidedServiceId=" + int.Parse(Request["sp"]));
}
catch (Exception ex)
{
errorMessage.Text = "<b>Error updating an existing DSN record!</b><br /><br />" + ex.ToString();
warnings.Visible = true;
}
}
唯一更新的字段是oldDSN.DateSaved,其他所有字段都保持不变。没有抛出任何错误或异常。表现得好像有效,但没有。此外,当我硬编码要更新的值时,记录更新得很好。有什么想法吗?
在Page_Load
(将数据源中的信息放入TextBoxes等)中,需要将数据绑定代码封装在If(Page.IsPostBack)
块中。
所以你的代码应该是这样的:
protected void Page_Load (object sender, EventArgs e)
{
if(!Page.IsPostBack)
{
// Whatever you use to load the data from the database into
// your server controls goes here
loadData(); // example
}
}
这就是为什么您没有得到更新的信息——在您的更新代码有机会运行之前,您的标记元素正在从数据库中重新加载。