我正在尝试找到一种方法来区分同一页面上的用户控件(.ascx)实例。这些用户控件在页面中都有自己的关联控件,需要与之交互。
对于这个特殊的“提供者查找”工具,我需要能够调整页面上的文本框的值,这些文本框并不都具有相同的ID。
希望下面的内容能说明我的意思。
我的.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"/>用户控件(providerlookup.ascx)中的Javascript示例:
unassignedProviderSelection()
{
if (document.getElementById("DetailContentPlaceHolder_ReferringProviderNameTextBox") != null)
{
document.getElementById("ReferringProviderNameTextBox").value = "Blah blah blah";
}
}用户控件中的超文本标记语言(providerlookup.ascx):
<asp:Button ID="ButtonUnassignedProvider" runat="server" text="Unassigned"
onclientclick="unassignedProviderSelection(); return false;"
CausesValidation="False" Width="117px" UseSubmitBehavior="false" />因此,我在这里要做的是在该用户控件中提供一个名为"ButtonUnassignedProvider“的按钮,我想用它来修改.aspx页面中包含该用户控件的文本框的内容。
问题是我不知道textbox的id :我想通过在.aspx页面中声明实例时允许您设置用户控件的自定义属性来以通用方式完成此操作。
我没有编写原始的用户控件:它不会有任何用武之地,我需要尝试用这个新功能来增强它。我尝试的方式可能不是最好的方式...
感谢您能提供的任何帮助。
发布于 2017-08-31 02:21:25
您必须使用FindControl在控件树中向上导航,然后获取正确的ClientID。在UserControl所在的aspx页面上,它看起来像这样。
document.getElementById("<%= ProviderLookupReferring.FindControl("ButtonUnassignedProvider").ClientID %>")发布于 2017-09-01 02:48:42
今天早上我有机会与一位更有经验的Web开发人员交谈,他建议在服务器端构建我的Javascript,然后在未分配的按钮上添加一个onclientclick事件。这似乎行得通,所以我想这就是我要做的。
https://stackoverflow.com/questions/45966704
复制相似问题