我刚刚发布了一个问题,很快就得到了答复,谢谢。
我有一个新问题,因为我有一个 asp 标签,它在实例期间动态设置其上的文本,然后我有一个与其绑定(bind)的 onmousedown 函数,调用一个 javascript 函数来启用位于其下方的表格区域显示 -默认情况下没有。一切正常,直到我将其中两个用户控件放在页面上。它们都有正确的指定标签文本,但 javascript 启用似乎将第一个用户控件的表的显示样式属性设置为阻止,而不是位于被单击的标签下方的显示样式属性。我确信这是因为脚本在客户端运行(我真的很想保留)并且所有用户控件都具有相同的 id 名称(因为它们都是同一用户控件的实例化),因此要设置的 javascript样式显示属性只获取第一个表。我似乎想不出一个好方法来在安装时动态命名表,以便我可以为 JavaScript 指定这个“唯一”ID 名称或任何其他方式来完成这项工作。
用户控件asp代码如下:
function enableDivArea(objName) {
document.getElementById(objName).style.display = "block";
}
function disableDivArea(objName) {
document.getElementById(objName).style.display = "none";
document.forms[0].submit();
}<asp:Label style="cursor:pointer;color:#EA9156;font-family:Arial,Helvetica,sans-serif;font-weight:bold;" ID="m_emailAddressLabel" onmousedown="enableDivArea('EmailFormDivArea');" runat="server" Text="someone@emailaddress.com"></asp:Label>
<table id="EmailFormDivArea" style="display:none; border-style: outset; border-width: thin">
<tr>
<td>To: <asp:Label ID="m_sendEmailToLabel" runat="server" Text=""></asp:Label></td>
<td align="right"><asp:Label onmousedown="disableDivArea('EmailFormDivArea');" id="m_closeLabel" runat="server" Text="close"></asp:Label></td>
</tr>
<tr>
<td><asp:Label ID="m_fromLabel" runat="server" Text="First Name:" Visible="True"></asp:Label></td>
<td><asp:TextBox ID="m_firstNameBox" runat="server" Visible="True"></asp:TextBox></td>
</tr>
<tr>
<td><asp:Label ID="Label1" runat="server" Text="Last Name:" Visible="True"></asp:Label></td>
<td><asp:TextBox ID="m_lastNameBox" runat="server" Visible="True"></asp:TextBox></td>
</tr>
<tr>
<td><asp:Label ID="Label2" runat="server" Text="E-mail:" Visible="True"></asp:Label></td>
<td><asp:TextBox ID="m_emailBox" runat="server" Visible="True"></asp:TextBox></td>
</tr>
<tr>
<td><asp:Label ID="Label3" runat="server" Text="Phone number:" Visible="True"></asp:Label></td>
<td><asp:TextBox ID="m_phoneNumberBox" runat="server" Visible="True"></asp:TextBox></td>
</tr>
<tr>
<td><asp:Label ID="Label4" runat="server" Text="Message:" Visible="True"></asp:Label></td>
<td><asp:TextBox ID="m_messageBox" runat="server" Visible="True" Rows="6" TextMode="MultiLine"></asp:TextBox></td>
</tr>
<tr>
<td colspan="2" align="center"><asp:Button ID="m_sendMessageButton" runat="server" Text="Send Message"
onclick="m_sendMessageButton_Click" /></td>
</tr>
<tr>
<td colspan="2" align="center"><asp:Label runat="server" ID="m_statusLabel" Text="" Visible="true"></asp:Label></td>
</tr>
</table>
背后的代码如下所示:
protected void Page_Load(object sender, EventArgs e)
{
m_emailAddressLabel.Text = this.Parameter;
m_sendEmailToLabel.Text = this.Parameter;
}
最佳答案
让表在服务器上运行,并让用户控件实现 INamingContainer。 构造表的 ID,并在重写的 CreateChildControls 中以编程方式 (HtmlTable) 将其设置为 string.Concat(ID, "table")。
编辑:您还需要在 JavaScript 中动态 ID 引用。
您可以为此使用一些
关于asp.net - 使用 javascript 为单个 aspage 上的多个实例启用/禁用表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/466045/