ASP.NET控件ID
成都创新互联公司服务项目包括北塔网站建设、北塔网站制作、北塔网页制作以及北塔网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,北塔网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到北塔省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!
经常见到有人说在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设置为不可用
- Page.RegisterStartupScript("OnInitControl","");
- //Test为用户控件,TestControl为用户控件中的子控件。
现在说一下ASP.NET控件ID,在访问aspx文件时,IIS会将aspx的脚本进行编译。编译的时候将用户控件中的内容写在同一个页面中,为了防止页面中的控件与用户控件中的控件名称相同,在编译的时候对用户控件中的控件名称修改为 : 用户控件名:子控件 ,ASP.NET控件ID则修改为 用户控件ID_子控件ID。 在动态加载控件时,如果不对控件的ID进行赋值,则ASP.NET控件ID为上一次加载的控件ID,因此在加载用户控件后应该立即对其设置ID.
分享题目:介绍ASP.NET控件ID
URL分享:http://www.shufengxianlan.com/qtweb/news0/10900.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联