2017-08-30 102 views
0

我試圖找到一種方法,在同一頁上的用戶控件(的.ascx)的情況下,區分內的用戶控件的特定實例的屬性。這些用戶控件在他們需要與之交互的頁面內都有自己的相關控件。訪問一個頁面

對於這個特殊的「提供者查找」工具,我需要能夠調整文本框的頁面上並不都具有相同的ID值。

希望下面將說明我的意思。

HTML我的.aspx頁面中,在那裏我包括用戶控制的三種不同實例:

<uc4:providerlookup ID="ProviderLookupReferring" runat="server" allowunassigned="true" associatedtextbox="ReferringProviderNameTextBox"/> 
<uc4:providerlookup ID="ProviderLookupPrimary" runat="server" allowunassigned="false" associatedtextbox="PrimaryProviderNameTextBox"/> 
<uc4:providerlookup ID="ProviderLookupSecondary" runat="server" allowunassigned="false" associatedtextbox="SecondaryProviderNameTextBox"/> 

的用戶控件中的JavaScript示例(providerlookup.ascx):

unassignedProviderSelection() 
{ 

     if (document.getElementById("DetailContentPlaceHolder_ReferringProviderNameTextBox") != null) 
      { 
       document.getElementById("ReferringProviderNameTextBox").value = "Blah blah blah"; 
      } 
    } 

HTML內用戶控件(providerlookup.ascx):

<asp:Button ID="ButtonUnassignedProvider" runat="server" text="Unassigned" 
    onclientclick="unassignedProviderSelection(); return false;" 
    CausesValidation="False" Width="117px" UseSubmitBehavior="false" /> 

所以,我在這裏做什麼在該用戶控件中提供了一個名爲「ButtonUnassignedProvider」的按鈕,我想用它來修改包含用戶控件的.aspx頁面中的文本框內容。

問題是我不知道該文本框的ID:我想以通用的方式執行此操作,方法是在您的.aspx頁面中聲明實例時,允許您設置用戶控件的自定義屬性。

我沒有寫原來的用戶控件:它不會去任何地方,我需要嘗試這個新功能來增強它。我試圖做到這一點可能不是,雖然最好的方式的方式......

感謝您的幫助,您可以提供。

+0

只是要清楚,我真的希望在JavaScript代碼中做這個客戶端。我知道可能有服務器端解決方案,我也很想看到這些解決方案,但客戶端是我的首選。 –

回答

0

您必須使用FindControl來導航控制樹,然後得到正確的ClientID。它在UserControl所在的aspx頁面上看起來像這樣。

document.getElementById("<%= ProviderLookupReferring.FindControl("ButtonUnassignedProvider").ClientID %>") 
0

我有機會今天上午有更多的經驗,Web開發人員說話,他建議建立我的JavaScript在服務器端,然後添加的OnClientClick事件到未分配的按鈕。這似乎工作,所以我認爲這就是我會做的。