无法从aspx页面获取usercontrol的实例

时间:2013-10-15 21:01:33

标签: c# javascript asp.net user-controls devexpress

我有一个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”为空并且无法获取弹出控件的实例用户控制。

如何成功获取此控件的实例???

2 个答案:

答案 0 :(得分:0)

考虑使用Control.ClientID Property

.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;');