从数据库回发更新asp.net文本框会显示旧值

时间:2012-05-22 15:27:47

标签: c# asp.net .net windows

更新面板中的Asp文本框在页面加载中显示数据库中的值。更新面板内的按钮会触发回发。数据库过程更改要显示的值。如果(!Page.IsPostBack),则从Page_Load中的数据库更新文本框文本。确认在Page_Load结尾处文本框具有更新的值。屏幕上显示的值不会更改为更新值。

根据其他帖子,我尝试将文本框文本的更新移动到具有相同结果的OnPreRender事件。

到目前为止我唯一的解决方法是在每个回发上使用新ID重新创建控件,这样就不会从发布的数据中重新填充(使用附加到ID的时间戳)并使用Regex通过基本名称查找控件。这样我可以显示正确的值并在下一次回发时读取它,但这似乎是一个麻烦的解决方法。

在回发期间更新文本框的正确.NET方法是什么,并且值为“stick”?

1 个答案:

答案 0 :(得分:0)

如果您仅将texbox用于显示目的,则不应使用if (!Page.IsPostBack)

如果您需要使用文本框值。然后

protected void Page_Load(object sender, EventArgs e)
{
  if (!IsPostBack)
    TextBox1.Text = %YOUR_INITIAL_DB_VALUE%;
}

protected void Button1_Click(object sender, EventArgs e)
{
  string userInput = TextBox1.Text;
  TextBox1.Text = %YOUR_NEW_DB_VALUE%;
}