LoadControl HttpCompileException自定义服务器控件JavaScript错误
LoadControl HttpCompileException Custom Server Control JavaScript Error
我有一个带有复选框控件的自定义覆盖文本框。除非我尝试在Javascript中引用控件的TextBox/CheckBoxID,否则控件工作正常,然后在它呈现控件之前,我会得到HttpCompileException。有没有一个重写事件更适合在一个控件中添加多个控件,或者有更好的方法完全做到这一点?
页面上的控件:OverridableTextBox runat="server"ID="otbRate"TextBoxID="txtRate"CheckBoxID="chbRate">
引用JavasScript中的ID:"<%=txtRate.ClientID%>"导致.ascx页面的LoadControl事件上出现HttpCompileException
OverrideTextBox类
private string _TextBoxID = "";
private string _CheckBoxID = "";
private bool _AlignOverrideLeft = false;
private string _CheckBoxText = "";
public string TextBoxID
{
get { return _TextBoxID; }
set { _TextBoxID = value; }
}
public string CheckBoxID
{
get { return _CheckBoxID; }
set { _CheckBoxID = value; }
}
public string CheckBoxText
{
get { return _CheckBoxText; }
set { _CheckBoxText = value; }
}
public bool AlignOverrideLeft
{
get { return _AlignOverrideLeft; }
set { _AlignOverrideLeft = value; }
}
public TextBox TextBox = new TextBox();
public CheckBox CheckBox = new CheckBox();
protected override void OnInit(EventArgs e)
{
Table tbl = new Table();
TableRow tr = new TableRow();
TableCell tdOne = new TableCell();
TableCell tdTwo = new TableCell();
if (AlignOverrideLeft)
{
tdOne.Controls.Add(CheckBox);
tdTwo.Controls.Add(TextBox);
}
else
{
tdOne.Controls.Add(TextBox);
tdTwo.Controls.Add(CheckBox);
}
if (_TextBoxID != "") { TextBox.ID = _TextBoxID; }
if (_CheckBoxID != "") { CheckBox.ID = _CheckBoxID; }
CheckBox.Text = _CheckBoxText;
tr.Cells.Add(tdOne);
tr.Cells.Add(tdTwo);
tbl.Rows.Add(tr);
this.Controls.Add(tbl);
}
protected override void Render(HtmlTextWriter w)
{
if (CheckBox.Checked)
{
TextBox.ReadOnly = false;
}
else
{
TextBox.ReadOnly = true;
}
string CheckBoxClickJS = "var chb = d.getElementById('" + CheckBox.ClientID + "'); var txt = d.getElementById('" + TextBox.ClientID + "');";
CheckBoxClickJS += "if (chb.checked) { EnableTextBox(txt); txt.select(); } else { DisableTextBox(txt); }";
if (CheckBox.Attributes["onclick"] != null)
{
CheckBox.Attributes.Add("onclick", CheckBox.Attributes["onclick"].ToString() + CheckBoxClickJS);
}
else
{
CheckBox.Attributes.Add("onclick", CheckBoxClickJS);
}
base.Render(w);
}
您的页面无法直接访问txtRate
文本框,因为它位于otbRate
控件的Controls
集合中。请尝试以下操作:'<%= otbRate.ClientID + "_txtRate" %>'
相关文章:
- JavaScript错误:Microsoft JScript运行时错误:应为对象
- 将字符串拆分为数组时出现JavaScript错误
- 处理JSON字符串会导致JavaScript错误
- 使用AJAX在剑道网格中分组时出现Javascript错误
- Ajax对web URL的调用导致javascript错误
- 为什么当我尝试在Ionic中使用列表时会出现此JavaScript错误
- 可以't解决Javascript错误
- django出现神秘的javascript错误
- JavaScript错误无效的限定符
- 使用主题运行时portlet liferay时出现Javascript错误
- 绑定函数时在IE7中未实现Javascript错误
- Javascript错误:未捕获引用错误:未定义编辑
- eventListener出现JavaScript错误
- sharepoint站点的internet explorer中出现Javascript错误
- LoadControl HttpCompileException自定义服务器控件JavaScript错误
- 销毁Bootstrap popover时出现Javascript错误
- 无法加载Javascript错误XMLHttpRequest
- 使用JSON.parse时出现无效字符javascript错误
- 修复Javascript错误
- 模板字符串上的netbeans javascript错误(backticks)