Asp.net ObjectDataSource的UpdateMethod在运行时不反映在DB中,但在调试中起作用

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

这个标题听起来很奇怪,但实际上就是这样。 我发现有类似问题的人,但在这些页面上没有答案。 我有一个绑定到ObjectDataSource的DetailsView控件 代码:

当我在调试模式下运行程序并一步一步地缓慢运行时,如果我只是运行它,那么程序工作得非常完美,因为数据库中没有任何变化

我还尝试从DetailsView1_ItemUpdating函数调用updateUser函数,如下所示:

 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();