2013-05-08 101 views
2

我正在開發一個項目,並允許人們「更新」類別,比如更改類別的名稱。與我有以下消息這是點擊更新按鈕,用SQL語句後叫:獲取之前的文本框值asp.net vb.net

Dim cs As ClientScriptManager = Page.ClientScript 
      cs.RegisterStartupScript(Me.GetType(), "Message", "alert 
(' The category has been changed to:" + TextBoxCategorie.Text + "')", True) 

其中顯示:該類別已更改爲:文本框的值]

不過是它可以存儲以前的值,所以你喜歡的東西:

「沙」已成功更新爲「泥」

在此先感謝

+0

該代碼是如何調用的?你有一個「更新」按鈕或什麼? – nmat 2013-05-08 12:48:17

+0

啊對不起,這是在ButtonUpdate_Click上調用 – DiederikEEn 2013-05-08 12:48:56

+0

@Steve updated; 0 – DiederikEEn 2013-05-08 12:51:27

回答

2

看一下Page Life Cycle Overview,你可以從文本框中覆蓋它之前的值。有一個名爲OnTextChanged的事件似乎很有用,但問題在於此時舊值被覆蓋(Page_Load已經觸發了這一點)。我會考慮簡單地使用Page_Init並在覆蓋它之前將TextBox值分配給一個變量。

protected void Page_Init(object sender, EventArgs e) 
{ 
    String oldValue = TextBox.Text; 
} 
+0

然後在消息中調用該變量? – DiederikEEn 2013-05-08 12:53:55

+0

分配完成後,您可以通過任何您通常會以任何方式參考它。就像傳遞TextBoxCategorie.Text一樣。 – McArthey 2013-05-08 13:20:46

2

element.defaultValue爲您提供在客戶端的原始價值。

Dim script As String = "var txt=document.getElementById('" & TextBoxCategorie.ClientID & "');if(txt!=null)alert(txt.defaultValue + ' has been changed to: " + TextBoxCategorie.Text + "')" 
cs.RegisterStartupScript(Me.GetType(), "Message", script, True) 

但是,只有在此請求中對其進行了更改,該功能纔有效。如果在頁面發送到客戶端之前已經更改(如RegisterStartupScript建議),則必須將舊值存儲在其他位置或從數據庫加載它。

3

創建一個HiddenField與TextBox一起使用。最初加載頁面時,用初始值填充HiddenField。在PostBack上,將TextBox值與HiddenField值進行比較。您將可以訪問舊的和新的。

只要確保你沒有在回發站上重新填充HiddenField - 儘管如果你從數據庫填充它可能無所謂。但是如果你只填寫(Not Me.IsPostBack),那麼在PostBack上它應該爲你提供它在第一次加載頁面時的價值。