Asp.Net中页面运行时动态载入的UserControl内元素的事
来源:互联网 发布:阿里云大厦 百度图片 编辑:程序博客网 时间:2024/06/17 19:07
在Asp.Net页面的开发过程中,我们肯定经常会用到自定义的UserControl来复用部分页面元素,我们有两种使用UserControl的方式
1、在设计时往页面里添加需要的UserControl(最常用的就是从SolutionExplorer拖ascx到设计页面)
此种情况下,如果将UserControl放置在runat=server的html标签中,将可能导致UserControl内的元素事件处理不能正确执行。
例如:我们有时用一个div作为边框包含了需要的UserControl,而出于在运行时控制div的显示效果(比如运行时隐藏/显示这个div)的目的,可能将该div设为runat=server,此时,往往包含于div的UserControl内的元素事件触发可能被忽略,UserControl内的事件处理函数往往是不能正常运行的。
2、在运行时使用LoadControl函数动态载入UserControl,再Add到指定的位置
在动态载入的情况下,除了以上的问题同样存在之外,还会带来相应的初始化时的问题,这时,为了保证你的UserControl以你希望的语义正常运行,必须注意两点:
1)如果在LoadControl该UserControl的同时需要调用UserControl的某个初始化函数的话,该初始化函数的调用必须在将该ctlAdd到指定的页面某元素的Controls中之后进行,即必须按如下顺序:
...
MyCtlctl=(MyCtl)LoadControl("path");
this.someCtl.Controls.Add(ctl);
ctl.InitMethod();//本语句必须在上一条之后,否则ctl中的事件导致PostBack后,需要保持的textbox、listbox等的数据将丢失,导致各种错误
2)如果在LoadControl该UserControl的同时需要调用UserControl的某个初始化函数的话,该函数体内要注意对不需每次执行的代码放入if(!IsPostBack){}语句块中,否则会导致每次提交时被重复运行,这和Page_Load中的处理方法其实是一样的,但往往容易被忽略。
对于动态载入的UserControl还要保证每次PostBack时都重新Load所有的UserControl(但PostBack时可以不初始化UserControl内的元素的初始值),否则事件处理函数会找不到对应的触发源,保存于ViewState的数据也将因找不到对应元素而保持不了。
- Asp.Net中页面运行时动态载入的UserControl内元素的事
- Asp.Net中页面运行时动态载入的UserControl内元素的事件处理的注意事项
- Asp.Net中页面运行时动态载入的UserControl内元素的事件处理的注意事项
- ASP.Net页面载入时的运行顺序
- 页面内的配合与通信(usercontrol)
- 如何提高ASP.NET页面载入速度的方法
- 如何提高ASP.NET页面载入速度的方法
- 如何提高ASP.NET页面载入速度的方法
- 如何提高ASP.NET页面载入速度的方法
- ASP.NET页面中动态增加的控件、添加事件
- ASP.NET页面中动态增加的控件、添加事件
- asp.net动态添加页面元素
- 页面内嵌样式表中使用url(),导致的页面多次载入的问题
- 解释ASP.NET中用户控件UserControl不能被拖曳大小的原因
- vb.net 如何在同一页面,添加相同的usercontrol
- 一个简单的asp.net动态页面
- Asp.net用户控件(UserControl)的一些设计说明
- ASP.NET中如何动态载入css样式表
- 动态网页PHP函数速查大全汇总
- ASP.NET四种页面导航方式之比较与选择
- 动态网页制作技术PHP的十个应用技巧
- ASP.NET2.0中发送电子邮件剖析之一
- 详细介绍用PHP来编写网页记数器
- Asp.Net中页面运行时动态载入的UserControl内元素的事
- 动态网页制作技术PHP处理时间的实例
- asp.net图片加水印
- 学习动态网页PHP技术常见问题汇总解答
- .Net下的数据备份和还原
- 学习MySQL数据库中文模糊检索问题
- 让Apache支持ASP.NET-Apache,ASP.NET
- 开发大型PHP项目的方法
- C#.NET中关于结构与类之间的区别