获取textbox asp.net vb.net的先前值

时间:2013-05-08 12:46:38

标签: asp.net vb.net message

我正在开展一个项目,人们可以更新"类别,例如更改类别的名称。有了这个,我有以下消息在使用SQL语句单击更新按钮后调用它:

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

哪个显示:类别已更改为:[文本框的值]

但是可以存储以前的值,所以你会得到类似的东西:

"沙"已成功更新为" Mud"

提前致谢

3 个答案:

答案 0 :(得分:3)

创建一个HiddenField以与TextBox一起使用。页面最初加载时,使用初始值填充HiddenField。在PostBack上,将TextBox值与HiddenField值进行比较。您可以访问旧版和新版。

确保你没有在PostBack上重新填充HiddenField - 但是如果你从数据库填充它可能没关系。但是如果你只填写(Not Me.IsPostBack),那么在PostBack上,它应该为你提供首次加载页面时的价值。

答案 1 :(得分: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所示),则必须将旧值存储在其他位置或从数据库加载。

答案 2 :(得分:2)

查看Page Life Cycle Overview,您可以在覆盖之前从TextBox中获取值。有一个名为OnTextChanged的事件似乎很有用,但问题是此时会覆盖旧值(此时Page_Load已经触发)。我会研究简单地使用Page_Init并在覆盖它之前将TextBox值赋给变量。

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