我有一个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页面后面的代码中,我有以下内容。这可以防止错误:“控件集合无法修改,因为控件包含代码块”
Page.Header.DataBind();
在我的JS中,而不是使用:
<%=
会导致上述错误,我正在使用:
<%#
这是一个数据绑定表达式,需要我的page_load方法中的代码段。
这是真正的问题所在...... 我的aspx页面上的JS函数中的代码被命中,但始终显示该对象为null。我只是想获取一个对象的实例(usercontrol中的弹出控件),我可以相应地使用它。
var cntrl = document.getElementById('<%# BMCIS.Source.Controls.ManagerSwipe.MainASPxClientPopupControl %>');
cntrl.Show();
在调试期间,运行时代码显示如下:
var cntrl = document.getElementById('');
给出的错误消息是:“无法获取未定义或空引用的属性'显示'”这显然意味着(在调试期间检查)变量“cntrl”为空并且无法获取弹出控件的实例用户控制。
如何成功获取此控件的实例???
答案 0 :(得分:0)
.NET对象无法在JS端获得并且无法在JS DOM环境中运行,您需要使用ClientID在JS中获取DOM对象,然后使用任何类型的JS方法来显示,如http://www.randomsnippets.com/2008/02/12/how-to-hide-and-show-your-div/
答案 1 :(得分:0)
实际上,我需要做的是获取“服务器控件名称.ClientInstanceName”并将数据绑定放在页眉的控件的Load事件中,因为我正在使用数据绑定表达式“&lt;%#”
以下是代码段。 var swipe = eval('&lt;%#MyManagerSwipe.ClientInstanceName%&gt;');