- 热门文章:
- · 一切都因为分页-再谈分页
- · 简单快捷实现ASP在线发邮件功能
- · 改进性能和样式的 25+ ASP 技巧
- · 我的asp之路
- · 网上考试系统的一点心得
- · asp程序错误详细说明例表
- · 用好活动字幕标记—marquee
- · asp.net实现分组全选部分复选框
- · 在PPC上编译ASP,吃惊!!!
- · Asp之Request对象(1)
- · 汉字转拼音
- · 在ASP文件中调用DLL
上一篇:asp.net中的模态对话框 >>
ASP.net中动态加载控件时一些问题的总结
1 、在使用LoadControl加载控件后,用户控件中的某些控件不再响应事件。
这个问题主要是由于将控件加载放在if (!Page.IsPostBack)之内引起的,放在外面即可。在思归的blog上对此问题进行了详细的说明。
2、用户控件中某些控件的响应出现问题,如某个按钮第一次选择时不触发CLICK事件,第二次可以了。
这是由于没有给控件设置ID引起的,控件ID的作用在下面详细讲述。 如
Control userControl=(Control)Page.LoadControl(“Test.ascx”);
userControl.ID=“Test”;
AddControl(userControl);
3、如果用户控件中包括DataGrid控件,那么加载控件后可能出现不响应DataGrid事件的问题。
这好像是一个bug,必须要将加载的控件进行强制转换,如:
Test userControl=(Test)Page.LoadControl(“Test.ascx”);
注意:上面使用的是Test类型,而不是Control!
我在以前的Blog中曾提到过这个问题,这种方式将使系统的扩展性降低。 我有一个解决方案可以和大家讨论(运用策略模式):
public class BaseControl : System.Web.UI.UserControl
{
public virtual BaseControl ProcessThisControl();
}
所有的用户控件从BaseControl 继承,如果有Datagrid控件,由overide ProcessThisControl方法 ,如:
return this as Test;
按如下方式加载控件:
BaseControl userControl=(BaseControl )Page.LoadControl(“Test.ascx”);
userControl.ProcessThisControl();
4、在用户控件中如何使用JavaScript。
大家都知道,使用客户端的脚本将大大提高页面的响应速度,同时可以避免频繁地刷新页面。所以使用javascript来实现页面中部分控制是一个比较好的方式,但是在用户控件中如果访问某一个子控件呢?
使用方式如下: document.all.<%= TestControl.ClientID%>.disabled=true; //将TestControl设置为不可用
如果在C#脚本中应该这样写:Page.RegisterStartupScript("OnInitControl","<SCRIPT LANGUAGE=‘’JavaScript‘’>document.all.Test_TestControl.disabled=true;</SCRIPT>"); //Test为用户控件,TestControl为用户控件中的子控件。
现在说一下控件ID,在访问aspx文件时,IIS会将aspx的脚本进行编译。编译的时候将用户控件中的内容写在同一个页面中,为了防止页面中的控件与用户控件中的控件名称相同,在编译的时候对用户控件中的控件名称修改为 : 用户控件名:子控件 ,控件ID则修改为 用户控件ID_子控件ID。 在动态加载控件时,如果不对控件的ID进行赋值,则控件ID为上一次加载的控件ID,因此在加载用户控件后应该立即对其设置ID.
下一篇:一切都因为分页-再谈分页 >>
相关文章:
- · 存储过程介绍及asp存储过程的使用
- · 如何把ASP编写成DLL
- · Asp.Net下导出/导入规则的Excel(.xls)文件
- · 我写ASP时常用到的一些函数(2)
- · asp 中处理异常
- · asp
- · ASP.Net Web Page深入探讨
- · IIS6 和Tomcat5 的整合
- · 浅谈如何建立三层体系结构的ASP应用程序
- · ASP控制每页打印行数
- · 对Blog的个性化修改
- · 日曆控件
- · 网页设计的价格标准
- · 在ASP.NET里通过URL传递参数得到乱码的解决方法
- · 常用ASP代码(一)
- · ASP分页代码,已经写成类了,值得参考
- · ASP错误处理
- · 带右键菜单的树形控件(1)
- · 我写ASP时常用到的一些函数
- · 金额转换算法
- · IIS防止文件下载完全手册(非更改文件名法)
- · Adodb.Command 平时很少注意到的一个参数
- · 一个获得随机字符串的asp函数
- · vbscript函数集
- · asp之数学函数
- · 会员管理系统中会员类的实现
- · Recordset对象方法详解
- · ASP.NET 2.0 的内部变化
- · asp之日期和时间函数示例
- · asp之字符串函数示例
- · asp之转换函数示例
- · 编写留言本应注意的问题(适用PHP和ASP)
- · 关于ASPNET用户的权限
- · 全选删除特效
- · Set Up Client Certificates
- · 我写的第一个ASP.NET组件
- · ASP程序中同一个用户不允许同时登陆两次
- · 随机生成密码函数
