我有一个用于更改数据库中特定记录的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);
}
}
当我点击按钮时,没有返回任何错误消息,并且我在更新成功后重定向;但是,当我检查数据库时,记录与以前完全相同。
是什么给出了?
答案 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中传递的值,我猜它可以在帖子后面清除。我不确定,但请仔细检查