单击按钮时的asp.net更新表

时间:2013-03-13 10:02:38

标签: asp.net sql-server stored-procedures sql-update

我是asp.net的新手并且遇到了一个非常愚蠢的问题。但我无法弄明白。我有一个表格,由page_load上的数据填充,用户更新表单的输入文本,然后单击“更新”按钮。它会更新,但会使用旧数据进行更新。

为什么用旧数据更新它?

这是aspx表单

<form id="form1" runat="server">
<table>
    <tr>
        <td>ID</td>
        <td><asp:Label ID="lbl_id" runat="server" Text=""></asp:Label></td>
    </tr>
    <tr>
        <td>FirstName</td>
        <td><asp:TextBox ID="txt_firstname" runat="server"></asp:TextBox></td>
    </tr>
    <tr>
        <td>LastName</td>
        <td><asp:TextBox ID="txt_lastname" runat="server"></asp:TextBox></td>
    </tr>
</table>

这是背后的代码

protected void Guncelle_Click(object sender, EventArgs e)
{
        DbCommand dbCommand;
        dbCommand = db.GetStoredProcCommand("MedBul_Update_Registration_Request");
        db.AddInParameter(dbCommand, "id", DbType.Int16, request_id);
        db.AddInParameter(dbCommand, "FirstName", DbType.String, txt_firstname.Text.ToString().Trim());
        db.AddInParameter(dbCommand, "LastName", DbType.String, txt_lastname.Text.ToString().Trim());
        db.ExecuteNonQuery(dbCommand);
 }

这是存储过程

Create PROCEDURE [dbo].[MedBul_Update_Registration_Request]
(@id int,@FirstName varchar(50),@LastName varchar(50))

    AS
    BEGIN

    update NewProfessionalRequest set FirstName= @FirstName, LastName =@LastName
     where id = @id

    END

    GO

2 个答案:

答案 0 :(得分:1)

您提到使用页面加载数据填充页面控件。 将您的代码包含在Page_Load上,如下所示:

if(!isPostBack)
{
    // populate form with data from DB here
}

因为当您点击UpdateBtn时,会触发Page_Load事件,并且您的更改将使用来自数据库的“旧”数据重新编写。

答案 1 :(得分:1)

您应该在页面加载时检查Page.IsPostBack属性。

请参阅以下链接

http://msdn.microsoft.com/en-in/library/system.web.ui.page.ispostback.aspx