updatepanel中动态生成组件及绑定事件问题的解决

 updatepanel里面的gridview要自己进行分页,而且分页的linkbutton都要自己加,经过一天一夜的奋战,终于能够解决了。

 

1,在updatepanel里面动态添加linkbutton,初始代码如下:

       LinkButton lb = new LinkButton();

       lb.Text = "test";
       lb.Click += new EventHandler(subs);

       PlaceHolder1.Controls.Add(lb); 

      protected void subs(object sender, EventArgs e)
        {
            bind();

        }

 

       结果发现点击linkbutton的时候,页面会刷新,而我的linkbutton是放在updatepanel里面的,于是上网找资料,终于解决:

       给lb加个id即可。

       lb.ID="test";

 

2,问题又来了,点击linkbutton控件按钮后,事件没有响应,而且linkbutton按钮不见了。

   一开始以为是自己的代码写错了,不断检查click事件的绑定,还是没错。

3,调试了很久,终于明白了,当把这个代码写在page_load事件中的时候,可以执行。但是我的代码要判断当前页一些参数后才调用的,于是就有了问题了,如果不判断直接加,会每次累加。如果判断了再加,则在刷新页面或者第二次提交后,就会不响应事件。

4,原因,找了很久,终于明白了。在updatepanel中的控件提交后台后,返回来是先执行page_load事件,再执行控件的响应事件的!这个顺序很重要。所以,只要页面上提交了,但是因为我是再次提交,在我的page_load事件中绕过了更新代码,才出现这样的问题。于是我在控件提交的代码中来动态生成linkbutton。这样,在控件提交后,先执行了page_load,然后再执行我的控件事件,然后调用生成代码生成linkbutton。

     由于每次page_load进来的时候,动态控件都是空的,然后再生成linkbutton控件,这样就不会产生多余数据了。

5,但是linkbutton的点击事件仍然没有响应。

     上网找了很多地方,仍然没有结果。但是在弄明白了前面的顺序后,调试如下,就可以了:

     在page_load中给一个linkbutton,绑定事件,这个linkbutton是可以响应事件的。(注意,这个不赋予任何页面控件,只是为了让下面生成的控件能识别到响应事件函数。)

     然后在按照上面的说法,在需要动态生成的时候,比如点击button1,生成linkbutton。在button1,的onclick事件中写

    LinkButton lb = new LinkButton();

       lb.Text = "test";

       lb.ID="test";
       lb.Click += new EventHandler(subs);

       PlaceHolder1.Controls.Add(lb); 

     这样一来,只要点击button1按钮,就可以自动生成这个linkbutton,而且响应subs函数。

    注意的是,只有这个button有效,如果换了别的按钮的话,只要里面没有写生成linkbutton的代码,就不会生成linkbutton。

 

说明:上述所有的控件均放在updatepanel中。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值