簡體   English   中英

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

[英]ASP.NET Web Form Update Command Not Working

我有一個用於更改數據庫中特定記錄的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());
               }

效果很好:使用數據庫中的正確值填充字段。 從這里開始,目的是讓用戶編輯信息,然后通過單擊按鈕激活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);
        }
    }

當我單擊該按鈕時,沒有錯誤消息返回,並且自更新成功以來我已重定向。 但是,當我檢查數據庫時,記錄與以前完全相同。

是什么賦予了?

使用以下語句包裝您的page_load代碼塊:

if (!IsPostBack) { }

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

這樣可以防止在按下提交按鈕時執行代碼並覆蓋文本框輸入。

您能否保留一個斷點並檢查RecordID中傳遞的是什么值,我想它可能會在回發時清除。 我不確定,但請仔細檢查

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM