生成代码如下:
Button b1 = new Button();
b1.ID="test_b1";
b1.Text="test";
Panel1.Controls.Add(btnTest);
可以看到生成了。可是点他一下,或者其它按钮点一下,刚生成的组件就会消失。
Button b1 = new Button();
b1.ID="test_b1";
b1.Text="test";
Panel1.Controls.Add(btnTest);
可以看到生成了。可是点他一下,或者其它按钮点一下,刚生成的组件就会消失。
难道非要在PageLoad中每次加载才行吗?
if(!Page.IsPostBack)
{
//your code
}
拿ViewState当全局变量用吗?每次PageLoad都用ViewState来判断吗?
void Button1_Click(object sender, EventArgs e)
{
ViewState["add_btn1"] = true;
}
void Page_Load(object sender, EventArgs e)
{
if (Convert.ToBoolean(ViewState["add_btn1"]))
{
Button b1 = new Button();
b1.ID="test_b1";
b1.Text="test";
Panel1.Controls.Add(btnTest);
}
}
可是点击Button1不能立刻出现b1。还有,就算在Button1_Click中也加入b1的生成代码,
b1.Click+=new System.EventHandler(this.SetText);的话不能在本次生成得到响应,要到再次刷新后才能响应。
如果判断是否加载的话对视图维护相对要麻烦一些。
{
Button b1 = new Button();
b1.ID="test_b1";
b1.Text="test";
Panel1.Controls.Add(btnTest);
if(!Page.IsPostBack)
{
}
}
void Button1_Click(object sender, EventArgs e)
{
if (!Convert.ToBoolean(ViewState["add_btn1"]))
{
ViewState["add_btn1"] = true;
Button b1 = new Button();
b1.ID="test_b1";
b1.Text="test";
Panel1.Controls.Add(btnTest);
}
}
void Page_Load(object sender, EventArgs e)
{
if (Convert.ToBoolean(ViewState["add_btn1"]))
{
Button b1 = new Button();
b1.ID="test_b1";
b1.Text="test";
Panel1.Controls.Add(btnTest);
}
}
这样可以,只是感觉有点累赘。不知道各位有什么好办法没?