簡體   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