如下代码所示,在Page_Load中给TextBox赋值后,无论后来输入什么值,点击Button1,Label1.Text都等于初始值“测试数据”,不能更新文本框的值!
private
void Page_Load(object sender, System.EventArgs e)
{
TextBox1.Text = "测试数据";
}
private void Button1_Click(object sender, System.EventArgs e)
{
Label1.Text = TextBox1.Text;
}
{
TextBox1.Text = "测试数据";
}
private void Button1_Click(object sender, System.EventArgs e)
{
Label1.Text = TextBox1.Text;
}
经过仔细分析发现,点击Button后,先执行Page_Load,后响应Button事件,所以修改后的值又回到初始值了,导致文本框里的值不改变的假象。
解决办法:在Page_Load函数中添加if(!IsPostBack){},再把页面加载时控件文本赋值代码放到里面,这样做的意思就是当页面不是提交返回时,也就是页面第一次加载时执行文本框初始赋值,那么当执行更新操作时,页面重新加载就不会再执行初始赋值,也就不会因为重复初始赋值导致控件文本内容不变了,修改后的代码如下所示:
程序代码
private
void Page_Load(object sender, System.EventArgs e)
{
if (!IsPostBack)
{
TextBox1.Text = "测试数据";
}
}
private void Button1_Click(object sender, System.EventArgs e)
{
Label1.Text = TextBox1.Text;
}
{
if (!IsPostBack)
{
TextBox1.Text = "测试数据";
}
}
private void Button1_Click(object sender, System.EventArgs e)
{
Label1.Text = TextBox1.Text;
}