2013-05-08 102 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上它应该为你提供它在第一次加载页面时的价值。