【发布时间】:2012-12-10 16:44:28
【问题描述】:
我创建了一个动态控件表,其中每一行都是一对(DropDownList 和 TextBox),然后我在每个 DropDownList 选择的更改事件上关联了一个事件处理程序,因此我可以在其 TextBox 上进行更改,如下面的代码所示:
DropDownList TypeDDL = new DropDownList();
TypeDDL.ID = "TypeDDL_" + rowN.ToString();
TypeDDL.Width = 120;
TypeDDL.Height = 20;
InitializeTypeDDL(TypeDDL);
TypeDDL.AutoPostBack = true;
TypeDDL.Attributes.Add("onchange", "javascript:handleFieldsDDLEvent(this);");
TextBox FieldsDDL = new TextBox();
FieldsDDL.ID = "FieldsDDL_" + rowN.ToString();
FieldsDDL.Width = 120;
FieldsDDL.Height = 20;
FieldsDDL.Attributes.Add("style", "float:right");
但是事件处理程序的 Javascript 代码会触发一个异常告诉:
function handleFieldsDDLEvent(e) {
var elementId = (e.target || e.srcElement).id;
var IdArray = elementId.Split('_');
var ControlId = "Control_"+IdArray[1].toString();
if (IdArray[1] != "") {
var FieldsDDL = document.getElementById("<%="+ControlId +".ClientID%>");
// error CS1026: ) expected
ValueTxtBx.style.display = "none";
}
}
【问题讨论】:
-
请向我们展示生成的 JavaScript——浏览器实际接收的代码。
-
ControlId的值是多少? -
您不能将客户端变量 (
ControlId) 传递到服务器端代码,因为服务器端代码已经被处理。
标签: javascript c# asp.net controls dom-events