ASP.NET Web窗体更新命令不起作用

时间:2013-12-18 17:45:58

标签: c# asp.net webforms sql-update

我有一个用于更改数据库中特定记录的Web表单。这些字段由数据通过使用SqlDataReader的C#代码填充,如下所示:

  protected void Page_Load(object sender, EventArgs e)
    {
        string str = "Data Source=My_DB;Initial Catalog=BillingAuths;Integrated Security=True";
        string queryString = 
            "SELECT * FROM [AuthRecords] WHERE [ID] = @RecordID;";

        using (SqlConnection connection =
                   new SqlConnection(str))
        {
            SqlCommand command = new SqlCommand(queryString,connection);
            connection.Open();
            int qRecord = Convert.ToInt32(Request.QueryString["RecordID"]);
            command.Parameters.AddWithValue("@RecordID", qRecord);
            SqlDataReader reader = command.ExecuteReader();

                while (reader.Read())
               {
                EmailCntyDate.Text = (reader["EMailCountyDate"].ToString());
                EmailCtyCnct.Text = (reader["EMailCountyContact"].ToString());
                EmailCntyAppDate.Text = (reader["EMailCountyAppDate"].ToString());
               }

这很好用:字段使用DB中的正确值填充。从这里开始,目的是让用户编辑信息,然后通过单击按钮激活UPDATE命令。这个代码是HTML格式。

<asp:SqlDataSource ID="DB_Auths" runat="server" ConnectionString="<%$ ConnectionStrings:MyConnection %>" UpdateCommand="
    UPDATE [dbo].[Records]
    SET [EMailCountyContact]=@uEMailCountyContact,
        [EMailCountyDate]=@uEMailCountyDate,
        [EMailCountyApp]=@uEMailCountyApp
    WHERE [ID] = @RecordID">
  <UpdateParameters>
     <asp:QueryStringParameter Name="RecordID" Type="Int32" DefaultValue="null" QueryStringField="RecordID" />
     <asp:ControlParameter ControlID="EmailCntyDate" Name="uEMailCountyDate" />
     <asp:ControlParameter ControlID="EmailCtyCnct" Name="uEMailCountyContact" />
     <asp:ControlParameter ControlID="EmailCntyApp" Name="uEMailCountyApp" />
    </UpdateParameters>
</asp:SqlDataSource>
<asp:Button runat="server" ID="Sumbit" Text="Save" OnClick="Sumbit_Click" />

这是UPDATE过程的代码隐藏激活(理论上):

    protected void Sumbit_Click(object sender, EventArgs e)
    {
        try
        {
            DB_Auths.Update();
            Response.Redirect("~/Default.aspx");
        }
        catch (Exception error)
        {
            Response.Write("WARNING: WRITE TO DATA WAREHOUSE FAILED! Error:" + error);
        }
    }

当我点击按钮时,没有返回任何错误消息,并且我在更新成功后重定向;但是,当我检查数据库时,记录与以前完全相同。

是什么给出了?

2 个答案:

答案 0 :(得分:0)

使用此声明包装您的page_load代码块:

if (!IsPostBack) { }

http://msdn.microsoft.com/en-us/library/system.web.ui.page.ispostback(v=vs.110).aspx

这可以防止在按下提交按钮时执行代码并覆盖文本框输入。

答案 1 :(得分:0)

请你保留一个断点并检查RecordID中传递的值,我猜它可以在帖子后面清除。我不确定,但请仔细检查