动态创建按钮,页面刷新后的问题
我在页面初始化时动态加了两个按钮,然后在onclick事件改变当前按钮的样式,代码如下,但为什么每次一点后就刷新了,那两个按钮不见了,如果去掉 "if(!IsPostBack) ",每次样式就不会变,就是从新初始化了这些按钮,请问怎么样去保存这些动态创建的按钮,并每次点击时改变点击的按钮的样式啊.
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
HtmlTableCell cell = new HtmlTableCell();
cell.ID = "cell " + tmpName;
cell.Attributes[ "class "] = "TopBorder ";
LinkButton btn = new LinkButton();
btn.ID = "btn " + tmpName;
btn.Click += new EventHandler(btn_Click);
cell.Controls.Add(btn);
TopTable.Rows[0].Cells.Add(cell);
cell = new HtmlTableCell();
cell.ID = "cell " + tmpName;
cell.Attributes[ "class "] = "TopBorder ";
LinkButton btn = new LinkButton();
btn.ID = "btn " + tmpName;
btn.Click += new EventHandler(btn_Click);
cell.Controls.Add(btn);
TopTable.Rows[0].Cells.Add(cell);
}
}
void btn_Click(object sender, EventArgs e)
{
LinkButton btn = (LinkButton)sender;
HtmlTableCell cell = (HtmlTableCell)btn.Parent;
cell.Attributes[ "class "] = "SelectedTopBorder ";
foreach(HtmlTableCell tmpCell in TopRow.Cells)
{
if (tmpCell != cell)
{
cell.Attributes[ "class "] = "TopBorder ";
}
}
}
[解决办法]
if(!IsPostBack)里面的代码表示第一次运行会执行, 而每次postback以后就不会执行了
所以linkbutton在刷新以后不会被创建
应该要把它去掉
[解决办法]
请问怎么样去保存这些动态创建的按钮,并每次点击时改变点击的按钮的样式啊.
——————————————————————————————————————————
什么叫做“保存”呢?我相信你从来没有在正规的asp.net书籍上看见过“保存控件”这一说,这纯粹是你自己臆断的,看来没有遇到过好的教材。
你的程序,删除“if (!IsPostBack)”是正招。
为什么拖动到页面aspx上的控件不用编程插入页面控件树?其实细想想这是废话,aspx编译时产生了程序,再每一次页面装载之前(在页面实例初始化后立刻)就产生控件并且放入控件树了。而你编程动态产生的控件当然应该编程动态装载,而不能放到“if (!IsPostBack)”中。为什么“放到if (!IsPostBack)”,细想想逻辑上根本没有道理放到这里,纯粹是因为不求甚解地照抄某些用了这个语句的例子程序而造成的。