2

我正在做一个项目,人们可以“更新”类别,比如更改类别的名称。有了这个我有以下消息这在单击带有 SQL 语句的更新按钮后被调用:

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

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

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

“沙”已成功更新为“泥”

提前致谢

4

3 回答 3

3

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

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

于 2013-05-08T12:57:49.917 回答
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建议的那样),您必须将旧值存储在其他地方或从数据库加载它。

于 2013-05-08T12:49:57.590 回答
2

查看页面生命周期概述,您可以在覆盖之前从 TextBox 中获取值。有一个名为的事件OnTextChanged似乎很有用,但问题是此时旧值已被覆盖(此时 Page_Load 已经触发)。我会考虑简单地使用 Page_Init 并将 TextBox 值分配给一个变量,然后再覆盖它。

protected void Page_Init(object sender, EventArgs e)
{
     String oldValue = TextBox.Text;
}
于 2013-05-08T12:53:09.083 回答