2013-03-13 62 views
4

我是新來的asp.net,並陷入了一個非常愚蠢的問題。但我無法弄清楚。我有一個表單,該表單由page_load上的數據庫填充,用戶更新表單的輸入文本並單擊「更新」按鈕。它會更新,但會隨舊數據更新。點擊一個按鈕的asp.net更新表

爲什麼更新舊數據?

這裏是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 [email protected] 
    where id = @id 

    END 

    GO 
+0

請將您的存儲過程的內容。 – TechDo 2013-03-13 10:05:53

+0

當你在調試模式下再次點擊按鈕時,你在txt_firstname.Text中看到了什麼? – DevelopmentIsMyPassion 2013-03-13 10:06:07

+0

它顯示新的數據。 – 2013-03-13 10:07:00

回答

1

你提到你填寫頁面控件與頁上的數據加載。 包裝你上的Page_Load代碼:

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

因爲當你打UpdateBtn Page_Load事件中被解僱,並與DB「老」的數據更改被重新所著。

+0

它在if(!ispostback) – 2013-03-13 10:09:40

+0

愚蠢的猜測,是你的id字段設置爲DB中的主鍵? – 2013-03-13 10:14:52