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

Accessing the attributes of a specific instance of a user control within a page

提问人:Austin Gerschler 提问时间:8/31/2017 更新时间:9/1/2017 访问量:115

问:

我正在尝试找到一种方法来区分同一页面上的用户控件 (.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";
            }
    }

用户控件 (providerlookup.ascx) 中的 HTML:

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

因此,我在这里所做的是在该用户控件中提供一个名为“ButtonUnassignedProvider”的按钮,我想使用它来修改包含用户控件的.aspx页中文本框的内容。

问题是我不知道文本框的 id:我想以一种通用的方式执行此操作,允许您在.aspx页中声明实例时设置用户控件的自定义属性。

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

感谢您提供的任何帮助。

JavaScript asp.net 用户控制 服务器端 客户端

评论

0赞 Austin Gerschler 8/31/2017
需要明确的是,我真的希望在javascript代码中做这个客户端。我知道可能有服务器端解决方案,我也希望看到这些解决方案,但客户端是我的首选。

答:

0赞 VDWWD 8/31/2017 #1

您必须使用在控制树上导航,然后获得正确的 .在 UserControl 所在的 aspx 页上,它如下所示。FindControlClientID

document.getElementById("<%= ProviderLookupReferring.FindControl("ButtonUnassignedProvider").ClientID %>")
0赞 Austin Gerschler 9/1/2017 #2

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