我用以下内容填充我的texbox:
foreach (User u in userInfo)
{
txtNickname.Text = u.Nickname;
txtFirstName.Text = u.FirstName;
txtLastName.Text = u.LastName;
txtEmail.Text = u.Email;
}
我的文本框现在填充了数据库中的数据。
例如,我在所有texbox中填充新值,然后点击按钮,而不是这样:
if (txtNickname.Text != String.Empty && txtFirstName.Text != String.Empty && txtLastName.Text != String.Empty && txtEmail.Text != String.Empty)
{
//TODO
}
但是当我调试时:文本框的值是旧值(来自foreach循环的值),而不是我填写在文本框中的新值。
为什么会这样?我正在从文本框中的数据库加载一些数据,之后我自己更改了文本框的值,当我调试文本框时,值仍然是数据库值(参见foreach-loop)。
答案 0 :(得分:3)
如果在Page_Load事件中执行了第一个循环,那么您应该确保在单击按钮后回发页面时不再执行。
MSDN上Page.IsPostBack的更多信息
private void Page_Load()
{
if (!IsPostBack)
{
// This code should be executed only when the page is being
// rendered for the first time not when is responding to a postback
// raised by the <runat="server"> controls
UserInfoCollection userInfo = GetUserInfoCollection();
foreach (User u in userInfo)
{
txtNickname.Text = u.Nickname;
txtFirstName.Text = u.FirstName;
txtLastName.Text = u.LastName;
txtEmail.Text = u.Email;
}
}
}