在ButtonAdd_Click中设置后,我没有得到flag
的正确值。该方案是当我点击ButtonAdd时,protected void ButtonAdd_Click
调用private AddNewRowToGrid()
来设置flag=true
使用的protected void btn3_click
。
public partial class WebForm3 : System.Web.UI.Page
{
bool flag = false;
protected void Page_Load(object sender, EventArgs e)
{
//MyCode
}
private void AddNewRowToGrid()
{
flag = true;
}
protected void ButtonAdd_Click(object sender, EventArgs e)
{
AddNewRowToGrid();
}
protected void btn3_Click(object sender, EventArgs e)
{
if(flag == true)
{
}
}
}
答案 0 :(得分:1)
您面临的问题是,每次点击按钮都是对服务器的新回发,该回发将创建您的类的新实例以处理每个请求。
这意味着在{2}回发之间设置flag
,一次单击ButtonAdd
按钮,另一次单击btn3_Click
按钮时无效,因为您发现自己
最简单的解决方案是将此flag
存储在ViewState
中(注意:要非常小心您要存储在ViewState
中的内容,因为它会来回发送每个请求)
无论哪种方式,如果你改变你的代码,那么它会做你所期望的:
public partial class WebForm3: System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
//MyCode
}
private void AddNewRowToGrid()
{
Flag = true;
}
protected void ButtonAdd_Click(object sender, EventArgs e)
{
AddNewRowToGrid();
}
protected void btn3_Click(object sender, EventArgs e)
{
if (Flag == true)
{
}
}
private bool Flag
{
get
{
bool? flag = ViewState["flag"] as bool?;
return flag.HasValue ? flag.Value : false;
}
set
{
ViewState["flag"] = value;
}
}
}