访问页面中用户控件的特定实例的属性

时间:2017-08-30 17:43:31

标签: javascript asp.net user-controls server-side client-side

我正试图找到一种方法来区分同一页面上的用户控件(.ascx)实例。这些用户控件在页面中都有自己的关联控件,需要与之交互。

对于这个特定的“提供者查找”工具,我需要能够调整页面上不具有相同ID的文本框的值。

希望以下内容能说明我的意思。

我的.aspx页面的HTML,其中包含三个不同的用户控件实例:

<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"/>

用户控件(providerlookup.ascx)中的Javascript示例:

    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页面中声明实例时设置用户控件的自定义属性来以通用方式执行此操作。

我没有编写原始用户控件:它不会去任何地方,我需要尝试使用这个新功能来增强它。我尝试这样做的方式可能不是最好的方式......

感谢您提供任何帮助。

2 个答案:

答案 0 :(得分:0)

您必须使用FindControl向上导航控制树,然后获取正确的ClientID。它会在UserControl所在的aspx页面上看起来像这样。

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

答案 1 :(得分:0)

今天早上我有机会与更有经验的Web开发人员交谈,他建议在服务器端构建我的Javascript,然后在未分配按钮上添加onclientclick事件。这似乎有效,所以我认为这就是我要做的。