[英]Cannot get instance of usercontrol from aspx page
我有一个usercontrol,并且在该usercontrol的html内,我有一个Popup控件的以下定义,我试图通过javascript从aspx页面访问它。
<dx:ASPxPopupControl ID="MainASPxPopupControl"
ClientInstanceName="MainASPxClientPopupControl"
runat="server"
HeaderStyle-HorizontalAlign="Left"
RenderMode="Lightweight"
AutoUpdatePosition="true"
PopupHorizontalAlign="WindowCenter"
PopupVerticalAlign="WindowCenter"
OnInit="MainASPxPopupControl_Init">
在usercontrol的背后代码中,我具有以下属性,以便我的aspx页面可以访问它:
public static object MainASPxClientPopupControl { get; set; }
在Page_load事件的aspx页面后面的代码中,我具有以下内容。 这样可以避免出现错误:“由于控件包含代码块,因此无法修改Controls集合”
Page.Header.DataBind();
在我的JS中,而不是使用:
<%=
这将导致上述错误,我正在使用:
<%#
这是一个数据绑定表达式,需要我的page_load方法中的代码段。
真正的问题就在这里...我的aspx页面上的JS函数中有代码,但该代码被击中,但始终显示该对象为null。 我只是在尝试获取对象的实例(用户控件中的弹出控件),在其中可以相应地使用它。
var cntrl = document.getElementById('<%# BMCIS.Source.Controls.ManagerSwipe.MainASPxClientPopupControl %>');
cntrl.Show();
在调试期间,运行时代码显示如下:
var cntrl = document.getElementById('');
给出的错误消息是:“无法获取未定义或空引用的属性'Show'”,这显然意味着(在调试过程中检查)变量“ cntrl”为空,并且无法在用户控件中获取弹出控件的实例。
我如何成功获取此控件的实例???
.NET对象无法在JS端获得,并且不能在JS DOM环境中使用,您需要使用ClientID在JS中获取DOM对象,然后使用任何一种JS方法进行显示,例如http://www.randomsnippets。 com / 2008/02/12 / how-to-hide-and-show-your-div /
实际上,由于我使用的是数据绑定表达式“ <%#”,因此我需要获取“服务器控件名称.ClientInstanceName”并将数据绑定放置在页面标题的控件的Load事件中。
这是代码片段。 var swipe = eval('<%#MyManagerSwipe.ClientInstanceName%>');
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.