谨记给UpdatePanel中动态添加的控件赋ID

系统 1915 0
原文: 谨记给UpdatePanel中动态添加的控件赋ID

  昨天下定决 心对上次做的布局编辑器控件加以改进,其中最主要变化的就是要完全使用ASP.NET AJAX!但是很遗憾,虽然耳闻已久,但目前对ASP.NET AJAX的熟悉程度实在令人汗颜,而且有一段时间没有怎么关注了,以前学会的那点皮毛也忘得差不多了,不过即使从头开始也没什么大不了的。虽然决心很大, 不过刚拿起UpdatePanel它就给了我一个下马威,实在有够郁闷的!

就 是下面很简单的一段代码,意图很简单,动态创建一个UpdatePanel,然后在其中放置一个LinkButton!(为了做对比,我在 UpdatePanel外面也放置了一个LinkButton)按照以前的经验,这就是实现局部刷新所需的全部工作了,而且ASP.NET AJAX 1.0中,UpdatePanel的ChildrenAsTriggers属性默认true,也就是说UpdatePanel中的LinkButton自 动成为触发器。

 1   public partial class _Default : System.Web.UI.Page
 2   {
 3       protected override  void  OnInit(EventArgs e)
 4       {
 5           base.OnInit(e);
 6  
 7           UpdatePanel p1  =   new  UpdatePanel();
 8           p1.ID  =   " MyUpdatePanel " ;
 9  
10           LinkButton lbInside  =   new  LinkButton();
11           lbInside.Text  =   " Inside updatepanel " ;
12           p1.ContentTemplateContainer.Controls.Add(lbInside);
13            this .PlaceHolder1.Controls.Add(p1);
14  
15           LinkButton lbOutside  =   new  LinkButton();
16           lbOutside.Text  =   " Outside updatepanel " ;
17            this .PlaceHolder1.Controls.Add(lbOutside);
18       }
19   }

可是运行结果却让我大跌眼镜(虽然我不带眼镜,呵呵), 点击“Inside updatepanel”并没有像我想的那样局部刷新,而是刷新了整个页面,出现的浏览历史记录就是明证 !而点击设计期添加的那个LinkButton则完全正常!
谨记给UpdatePanel中动态添加的控件赋ID


到了这里,出于对MS的一贯信任,我不禁怀疑起自己的智商来,那么一小段代码居然会有问题,难道我年纪轻轻就老年痴呆了???天哪!我战战兢兢查看了一下页面源码:
谨记给UpdatePanel中动态添加的控件赋ID

嗯,细看之下果然有点区别,那些“ctlXXX”无疑是自动生成的ID,但是我怎么就没看到对应的id属性呢?难道就是它们在搞鬼?反正死马做活马医,加上ID再说,再次运行,果然,一切搞定,哈哈~~~(旁白:果然是老年痴呆,至于笑成这样嘛!!!)
 1   public partial class _Default : System.Web.UI.Page
 2   {
 3       protected override  void  OnInit(EventArgs e)
 4       {
 5           base.OnInit(e);
 6  
 7           UpdatePanel p1  =   new  UpdatePanel();
 8           p1.ID  =   " MyUpdatePanel " ;
 9  
10           LinkButton lbInside  =   new  LinkButton();
11            lbInside.ID  = "lbInside" ;
12           lbInside.Text  =   " Inside updatepanel " ;
13           p1.ContentTemplateContainer.Controls.Add(lbInside);
14            this .PlaceHolder1.Controls.Add(p1);
15  
16           LinkButton lbOutside  =   new  LinkButton();
17           lbOutside.Text  =   " Outside updatepanel " ;
18            this .PlaceHolder1.Controls.Add(lbOutside);
19       }
20   }

谨记给UpdatePanel中动态添加的控件赋ID


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论