Asp.net ObjectDataSource的UpdateMethod在运行时不反映在DB中,但在调试中起作用
这个标题听起来很奇怪,但实际上就是这样。 我发现有类似问题的人,但在这些页面上没有答案。 我有一个绑定到ObjectDataSource的DetailsView控件 代码: 当我在调试模式下运行程序并一步一步地缓慢运行时,如果我只是运行它,那么程序工作得非常完美,因为数据库中没有任何变化 我还尝试从DetailsView1_ItemUpdating函数调用updateUser函数,如下所示:Asp.net ObjectDataSource的UpdateMethod在运行时不反映在DB中,但在调试中起作用,asp.net,sql-update,objectdatasource,detailsview,Asp.net,Sql Update,Objectdatasource,Detailsview,这个标题听起来很奇怪,但实际上就是这样。 我发现有类似问题的人,但在这些页面上没有答案。 我有一个绑定到ObjectDataSource的DetailsView控件 代码: 当我在调试模式下运行程序并一步一步地缓慢运行时,如果我只是运行它,那么程序工作得非常完美,因为数据库中没有任何变化 我还尝试从DetailsView1_ItemUpdating函数调用updateUser函数,如下所示: protected void DetailsView1_ItemUpdating(object sen
protected void DetailsView1_ItemUpdating(object sender, System.Web.UI.WebControls.DetailsViewUpdateEventArgs e)
{
try
{
string newEmail = (string)e.NewValues["Email"];
string newPhoneNumber = (string)e.NewValues["PhoneNumber"];
if (!UserHomeValidate.userUpdateValidate(newEmail, newPhoneNumber))
{
e.Cancel = true;
Error.Visible = true;
}
else
UserHomeValidate._updateUser(newEmail, newPhoneNumber, Session["Username"].ToString().ToUpper());
}
catch (Exception exception)
{
Utility.LogFile.CreateLogFile(exception);
}
}
其中_updateUser与updateUser完全相同,但数据库仍然没有更改。。。。这可能与回发有关,但我不知道它是如何工作的。。
这让人感到沮丧,希望得到lil的帮助。解决了问题。。。
我不得不补充一句
if (!Page.IsPostBack)
DetailsView1.DataBind();
加载到页面以避免在回发时绑定,因为旧值将被传递
protected void DetailsView1_ItemUpdating(object sender, System.Web.UI.WebControls.DetailsViewUpdateEventArgs e)
{
try
{
string newEmail = (string)e.NewValues["Email"];
string newPhoneNumber = (string)e.NewValues["PhoneNumber"];
if (!UserHomeValidate.userUpdateValidate(newEmail, newPhoneNumber))
{
e.Cancel = true;
Error.Visible = true;
}
else
UserHomeValidate._updateUser(newEmail, newPhoneNumber, Session["Username"].ToString().ToUpper());
}
catch (Exception exception)
{
Utility.LogFile.CreateLogFile(exception);
}
}
if (!Page.IsPostBack)
DetailsView1.DataBind();