看了两天asp.net 问个小问题,你一定会的
Page_Load 的时候,动态添加 两个按钮A,B 到 panel
每个 按钮, 关联一个 事件,事件就是把自己remove
听着很好
但是遇到了个问题, 就是我按A的时候,可以把A remove掉
按B的时候,虽然也可以把B remove掉 ,但是触发了 postback,然后A 又出来了
请问这种情况一般怎样处理?
1楼代码
------解决方案--------------------if(!isPostback)
{
Button bt1 = new Button();
bt1.Text = "dynamic button A";
bt1.ID = "newBtA";
bt1.Click += new EventHandler(newButton1_Click);
PlaceHolder1.Controls.Add(bt1);
Button bt2 = new Button();
bt2.Text = "dynamic button B";
bt2.ID = "newBtB";
bt2.Click+=new EventHandler(newButton1_Click);
Panel1.Controls.Add(bt2);
}
------解决方案--------------------在Page_Load中,
if(!IsPostBack)
{
//这里的代码只有页面第一次打开(或刷新)时会执行,而页面内任何按钮的回调时不会执行。
}
经常用到。
------解决方案--------------------protected void Page_Load(object sender, EventArgs e)
{
if(!isPostback)
{
Button bt1 = new Button();
bt1.Text = "dynamic button A";
bt1.ID = "newBtA";
bt1.Click += new EventHandler(newButton1_Click);
PlaceHolder1.Controls.Add(bt1);
Button bt2 = new Button();
bt2.Text = "dynamic button B";
bt2.ID = "newBtB";
bt2.Click+=new EventHandler(newButton1_Click);
Panel1.Controls.Add(bt2);
}
}
------解决方案--------------------放到 Page_Init里试试
protected void Page_Init(object sender, EventArgs e)
{
Button bt1 = new Button();
bt1.Text = "dynamic button A";
bt1.ID = "newBtA";
bt1.Click += new EventHandler(newButton1_Click);
PlaceHolder1.Controls.Add(bt1);
Button bt2 = new Button();
bt2.Text = "dynamic button B";
bt2.ID = "newBtB";
bt2.Click+=new EventHandler(newButton1_Click);
Panel1.Controls.Add(bt2);
}
------解决方案--------------------
搞一个session值来存贮他们的状态,0,1,2, 0是未创建,1是创建了,2是移除了,然后在page_load里面判断这些session值来判断是否 动态添加对应的按钮,也可用用viewstate什么的,来存储,楼主看这个思路行不行
------解决方案--------------------
或者你把你动态生成的button 放到 一个list<button>集合中,然后放到session里面,移除的时候从session里面移除,用的时候,从session里面去取。