日期:2014-05-17  浏览次数:20427 次

有关变量问题,谁能解释一下这种现象?
代码如下:
private string ab1;
protected void Page_Load(object sender, EventArgs e)
{
  if (!IsPostBack)
  {
  BindGrid1();
  }
}

public void BindGrid1()
{
  ab1="123";
}
protected void ImageButton1_Click(object sender, ImageClickEventArgs e)
{
  Label1.Text =ab1;
}
===========================
以上代码Label1.Text的值取得不到是123

如果去掉if (!IsPostBack){} 这个,就可以取得正确的值,
不知如何解释?



------解决方案--------------------
if(!IsPostBack)
里的代码只在页面加载时运行
------解决方案--------------------
因为第一次,会进入BindGrid1,有值没问题,点击后,因为是服务端控件会引起页面刷新,但是因为load事件中有if判断,所以第二次不会执行BindGrid1,又因为页面刷新,会重置变量,所以ab1=“”
------解决方案--------------------
BindGrid1();这个确认执行了??
------解决方案--------------------
服务器控件的事件均会引发导致页面重新加载

IsPostBack是在第一次加载才会执行的,而由页面其他控件导致的页面回发使得IsPostBack为ture,便不会执行赋值操作
------解决方案--------------------
回发后没有进入到if(!IsPostBack)里
abc值为初始值。
------解决方案--------------------
点击按钮刷新页面之后,因为if(!IsPostBack),abc没有赋值,abc在刷新页面时重置为""
------解决方案--------------------
探讨

如果这种情况呢?
if (!IsPostBack)
{
BindGrid1();
dax1();
}
private void dax1()
{
string sql = ab1;
}
如果执行了ImageButton1_Click操作后,string sql 的值是否变成""