我有一个.ascx ComboBoxControl定义如下。让我们称之为Control1
<%@ Control Language="C#" AutoEventWireup="true"
Inherits="ComboBoxControl" Codebehind="ComboBoxControl.ascx.cs" %>
<table border="0" cellpadding="0" cellspacing="0" style="border: 0px solid red">
<tr>
<td style="width: 60px; vertical-align: top">
<asp:TextBox ID="txtSelectedMLValues" class="dropdownbox" runat="server" ReadOnly="true" Style="width: 60px;" EnableViewState="true" Font-Size="11px" />
</td>
<td style="width:14px;" class="imgalign" align="left">
<img alt="" id="imgShowHide" runat="server" src="~/Images/drop.gif" height="20" />
</td>
</tr>
<tr>
<td class="DropDownLook" style="vertical-align: top" colspan="2">
<div style="vertical-align: top;">
<div id="divCheckBoxListClose" runat="server" class="DivClose" style="font-weight:700;color:Black; font-size:11;padding-left:6px;">
<label id="lblClose" runat="server" class="LabelClose Green" >
Click Here To Close <span class="closecross" style="vertical-align:text-bottom; margin-bottom:-1px; " >X</span></label>
</div>
<div id="divCheckBoxList" runat="server" class="DivCheckBoxList">
<div>
<asp:CheckBox ID="chkAll" runat="server" CssClass="CheckBoxList leftPaddingforcombo" Text="ALL" ToolTip="ALL"/>
</div>
<asp:CheckBoxList ID="chkMultipleValues" runat="server" CssClass="CheckBoxList"
Width="500px" >
</asp:CheckBoxList>
</div>
</div>
</td>
</tr>
</table>
在.cs文件后面的控件代码中,我有下面的代码来设置ComboBoxControl的onClick事件。
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
txtSelectedMLValues.Attributes.Add("onclick", "ShowMList(" + divCheckBoxList.ClientID + "," + divCheckBoxListClose.ClientID + ")");
chkMultipleValues.Attributes.Add("onblur", "HideMList(" + divCheckBoxList.ClientID + "," + divCheckBoxListClose.ClientID + ")");
chkMultipleValues.Attributes.Add("onclick", "FindSelectedItems(this," + txtSelectedMLValues.ClientID + "," + chkAll.ClientID + ");");
}
}
我在另一个如下的.ascx控件(我们称其为Control2)中使用了上面的ComboBoxControl(Control1)。
<td width="15px" style="text-align: left;display: inline-block;">
<uc2:ComboBoxControl ID="ComboBoxControlNames" runat="server" />
</td>
我遇到的问题是,当我在ComboBoxControl中选择一个复选框时,出现以下错误“ ctl00_ContentPlaceHolderMain_ctl00_ComboBoxControlNames_txtSelectedMLValues'未定义”
请注意,“ ContentPlaceHolderMain”是我的MasterPage中的asp:ContentPlaceHolder。
当我查看页面源代码时,存在ClientID“ ctl00_ContentPlaceHolderMain_ctl00_ComboBoxControlNames_txtSelectedMLValues”,但是IE 11抛出未定义的错误。
在Chrome中,不会出现错误。我在努力阻止IE 11中的错误。
最佳答案
该代码将呈现为
<input onclick="ShowMList( theOneId, theOtherId)" />
如您所见,它们将被视为变量而不是字符串。您需要将它们用引号引起来。
txtSelectedMLValues.Attributes.Add("onclick", "ShowMList('" + divCheckBoxList.ClientID + "','" + divCheckBoxListClose.ClientID + "')");
现在为其他人做
关于javascript - JavaScript运行时错误:控件ClientID未定义,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34656539/