[英]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.