我有一個web表單,我正在使用它來更改數據庫中的特定記錄。這些字段由數據通過C#代碼填充後面使用SqlDataReader對象如下:ASP.NET Web窗體更新命令不起作用
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][email protected],
[EMailCountyDate][email protected],
[EMailCountyApp][email protected]
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" />
這是更新過程的代碼隱藏激活(理論上):
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);
}
}
當我點擊按鈕,返回任何錯誤信息,我重定向作爲更新是成功的;但是,當我檢查數據庫時,記錄與以前完全一樣。
什麼給?
你能保持一個斷點,並檢查在RecordID中傳遞什麼值,我想它可能會在回發上清除。我不確定,但請仔細檢查一下吧 –
這樣做了!感謝您借給小白手! –