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的事件啊?求高手指导啊

解决方案 »

  1.   


    再补充点 如果我要删除 按照IP1 ip2  ip3 我要删除ip2这一行,然后ip3这一行就变成ip2这一行依次类推这个要怎么实现啊
      

  2.   

    我反复说过一个最简单的测试。我们可以用这个最简单的东西看看每一个人是否理解asp.net编程。就是你可以简单地往页面上拖一个button控件,然后其后台click事件中什么都不做。这就ok了!然后你在调试自己的程序时可以随时随意地点击这个按钮。显然,这个按钮什么具体的自定义代码都不做,那么当它被点击并且服务器上处理完这个click之后,你再在前端页面上显然应该看到任何界面都没有改变,什么也没有丢失、也没有混乱。假设你应该监测你的程序有针对数据库的操作,显然此回发操作时也不应该读取数据重新来绑定控件之类的,因为这个按钮根本不做什么事情。如果这样你的程序每次回发都要重新查询数据库并且引起一大堆控件重新绑定,可见程序性能低到极点。你的程序能够通过这个简单的测试吗?如果不能,那么从头理解asp.net编程,还不晚。
    不理解asp.net而一味地乱写asp.net程序,你的bug会越来越离谱。那么你还不如直接扔掉asp.net而从轻量级的html/javascript入手来考虑web编程。
      

  3.   

    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
      

  4.   


    我们每个人不都是一出来就很牛逼,什么都会,什么都能理解?我想每个人做每件事情都是从头开始的吧?我不信就你开始就是巅峰?你用你十几年甚至几十年的经验来说像我这样毫无大型项目开发经验,毫无技术性开发经历的人我肯定毫无辩驳的能力.谁学asp.net一来就去研究底层?谁学asp.net一来就把他理解的很透彻?还有“不是不能很好的使用”是我打错字了,我想表达的是如果把addtr放到page_load方法中,我要使用add按钮click方法添加行就很麻烦。我承认我技术很渣,但是至少我有学习的态度。你想想你自己最开始编程时是怎么样的,我就不相信你一开始什么bug都没有,什么低级问题都没出过?“结果愤青编程方式造成连基本功能都不能实现,那么还不如先接受你认为“不是很好”的代码,再来问。” 我不愤青 一点都不,我如果接受这个代码我就不用来问了。
    如果你下次再回答这种低级问题你先给个解决方案,然后再来说,最后你要是能提供针你所说的学习资料那就更好了,谢谢你,不过你这种方式很难让人接受。
      

  5.   


    我看你的blog了,发现是因为我吧addtr方法放在!ISpostback中 才没有绑定事件的,现在还不知道为什么,自己研究研究
      

  6.   

    在OnInit或者Page_Init事件中动态添加控件和注册控件的事件,
    ]
      

  7.   

    不要去添加!ISpostback的判断
    每次页面刷新都需要重新添加那些控件和事件,
    楼主利用一个午休或者晚自习的时间就可以了解清楚webform页面的工作机制,磨刀不误砍柴工
      

  8.   


    生命周期这些我都明白,可能在这个问题上有点想不通,思路没理清晰。我想实现的是点击一次add就要添加一行,行里一个linkbutton要绑定事件,注册事件必须要在page_load或者是找个之前的事件里注册才可以。我就是觉得这里思路不清晰,最后看了insus的博客有所领悟。对生命周期还不了解吧~