0

我有一个用户控件,并且在用户控件的 html 中,我有一个弹出控件的以下定义,我试图通过 javascript 从我的 aspx 页面访问该控件。

<dx:ASPxPopupControl ID="MainASPxPopupControl"
                ClientInstanceName="MainASPxClientPopupControl"
                runat="server"
                HeaderStyle-HorizontalAlign="Left"
                RenderMode="Lightweight"
                AutoUpdatePosition="true"
                PopupHorizontalAlign="WindowCenter"
                PopupVerticalAlign="WindowCenter"
                OnInit="MainASPxPopupControl_Init">

在用户控件的代码隐藏中,我具有以下属性,因此我的 aspx 页面将能够访问它:

public static object MainASPxClientPopupControl { get; set; }

在 Page_load 事件中我的 aspx 页面后面的代码中,我有以下内容。这样可以防止出现错误:“无法修改 Controls 集合,因为控件包含代码块”</p>

Page.Header.DataBind();

在我的 JS 中,而不是使用:

<%=

这将导致上述错误,我正在使用:

<%#

这是一个数据绑定表达式,需要我的 page_load 方法中的代码段。

这就是真正的问题所在......我的aspx页面上的JS函数中有代码被命中,但始终显示该对象为空。我只是想获取对象的一个​​实例(用户控件中的弹出控件),我可以在其中相应地使用它。

var cntrl = document.getElementById('<%# BMCIS.Source.Controls.ManagerSwipe.MainASPxClientPopupControl %>');
cntrl.Show();

在调试过程中,运行时代码显示如下:

var cntrl = document.getElementById('');

给出的错误消息是:“无法获取未定义或空引用的属性‘显示’”,这显然意味着(在调试期间检查)变量“cntrl”为空并且无法在用户控件中获取弹出控件的实例。

我怎样才能成功获得这个控件的实例???

4

2 回答 2

0

实际上,我需要做的是获取“服务器控件名称.ClientInstanceName”并在页面标题控件的加载事件中放置一个数据绑定,因为我使用的是数据绑定表达式“<%#”。

这是代码片段。var swipe = eval('<%# MyManagerSwipe.ClientInstanceName %>');

于 2013-10-16T20:08:53.210 回答
0

考虑使用Control.ClientID 属性

.NET 对象在 JS 端无法获取,在 JS DOM 环境下无法工作,需要使用 ClientID 在 JS 中获取 DOM 对象,然后使用任何一种 JS 方法显示,例如http://www.randomsnippets。 com/2008/02/12/how-to-hide-and-show-your-div/

于 2013-10-15T21:08:56.113 回答