首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

动态创建按钮,页面刷新后的有关问题

2011-12-10 
动态创建按钮,页面刷新后的问题我在页面初始化时动态加了两个按钮,然后在onclick事件改变当前按钮的样式,

动态创建按钮,页面刷新后的问题
我在页面初始化时动态加了两个按钮,然后在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)”,细想想逻辑上根本没有道理放到这里,纯粹是因为不求甚解地照抄某些用了这个语句的例子程序而造成的。

热点排行