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

动态平添控件并添加事件

2013-07-01 
动态添加控件并添加事件 protected void Page_Load(object sender, EventArgs e){if (!IsPostBack){if (Vi

动态添加控件并添加事件


 protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                if (ViewState["Count"] != null)
                {
         
                    Addtr();
                        
                }
            }
        }
     
        public void Addtr()
        {
               for (int i = 0; i < Convert.ToInt32(ViewState["Count"]); i++)
                {
                    HtmlTableRow r = new HtmlTableRow();

                    HtmlTableCell tc = new HtmlTableCell();
                    tc.InnerText = "IP Address " + (i + 2).ToString();
                    HtmlTableCell tc1 = new HtmlTableCell();
                    TextBox tx = new TextBox();
                    tx.ID = tc.InnerText + "StartIP";
                    tc1.Controls.Add(tx);
                    HtmlTableCell tc2 = new HtmlTableCell();
                    TextBox tx1 = new TextBox();
                    tx1.ID = tc.InnerText + "EndIp";
                    tc2.Controls.Add(tx1);
                    HtmlTableCell tc3 = new HtmlTableCell();
                    LinkButton lk = new LinkButton();
                    lk.ID = "del" + (i + 2).ToString();


                    lk.Text = "Delete";
                    lk.CommandArgument = "lk_Click";
                    tc3.Controls.Add(lk);
                    r.Cells.Add(tc);
                    r.Cells.Add(tc1);
                    r.Cells.Add(tc2);
                    r.Cells.Add(tc3);
                    t.Rows.Add(r);
                }
        }
       
        public void lk_Click(object sender, EventArgs e)
        {
            LinkButton lk = (LinkButton)sender;
            int index = Convert.ToInt32( lk.ID.Substring(3, 1));
            t.Rows.RemoveAt(index);
            if (!IsPostBack)
            {
                ViewState["Count"] = 0;
            }
            else
            {
                ViewState["Count"] = Convert.ToInt32(ViewState["Count"]) - 1;

            }
            if (ViewState["Count"] != null)
            {
                Addtr();

            }

        }

        protected void lk2_Click(object sender, EventArgs e)
        {
            ViewState["Count"] = Convert.ToInt32(ViewState["Count"]) + 1;
            Addtr();
        }





代码就是在一个table里面动态添加行,行里有服务器控件。现在就是无论我在Addtr中的lk.Click+=***或者lk.command+=***都没法绑定事件,触发不了.我知道生命周期如果把Addtr放到Page_load这里面就可以 但是不是不能很好的使用,在不破坏现在的结构下,能不能绑定linkbutton的事件啊?求高手指导啊

分享到:
[解决办法]
我反复说过一个最简单的测试。我们可以用这个最简单的东西看看每一个人是否理解asp.net编程。

就是你可以简单地往页面上拖一个button控件,然后其后台click事件中什么都不做。这就ok了!

然后你在调试自己的程序时可以随时随意地点击这个按钮。显然,这个按钮什么具体的自定义代码都不做,那么当它被点击并且服务器上处理完这个click之后,你再在前端页面上显然应该看到任何界面都没有改变,什么也没有丢失、也没有混乱。

假设你应该监测你的程序有针对数据库的操作,显然此回发操作时也不应该读取数据重新来绑定控件之类的,因为这个按钮根本不做什么事情。如果这样你的程序每次回发都要重新查询数据库并且引起一大堆控件重新绑定,可见程序性能低到极点。

你的程序能够通过这个简单的测试吗?如果不能,那么从头理解asp.net编程,还不晚。


不理解asp.net而一味地乱写asp.net程序,你的bug会越来越离谱。那么你还不如直接扔掉asp.net而从轻量级的html/javascript入手来考虑web编程。
[解决办法]
Refer:
http://www.cnblogs.com/insus/archive/2011/12/01/2270455.html
http://www.cnblogs.com/insus/archive/2012/09/24/2700658.html
http://www.cnblogs.com/insus/archive/2012/10/09/2717420.html
[解决办法]

引用:

你用2楼sp1234建议的方法(简单的不能再简单了)单步调试,
几分钟下来你就应该对页面运行机制有个入门级的认识了

热点排行