繁体   English   中英

无法从aspx页面获取用户控件的实例

[英]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”为空,并且无法在用户控件中获取弹出控件的实例。

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

考虑使用Control.ClientID属性

.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM