0

我已经为此苦苦挣扎了几天,但我没有运气。

问题是,我有一个详细信息视图,它是多视图中视图的一部分,但更重要的是,嵌套在我的详细信息视图中的是许多控件。在这些控件中,我对其中 3 个感兴趣,两个下拉列表和一个文本框。在我的一个下拉列表中,我附加了一个 javascript 函数,当用户从下拉列表中选择一个值时,该函数适用于 onchange 事件

现在,在我的 javascript 函数上,当用户使用“this”作为传递的参数选择一个值时,我可以从我的下拉列表中获取值。但是,在其他两个剩余控件,文本框和另一个下拉列表中,我无法获得该控件。

我尝试了以下代码片段(这已用于两个控件):

document.getElementById('<%= dv.FindControl("ddlTrust.ClientID") %>'); //this returns null

document.getElementById('<%= ddlTrust.ClientID %>'); //errors - says that control has not been declared

document.getElementById("ddlTrust"); //this returns null

有任何想法吗?

4

1 回答 1

0

dv.FindControl("ddlTrust.ClientID")将查找客户端 ID 为 的控件ddlTrust.ClientID。这就是您的第一条语句返回 null 的原因。但是在这 3 种方法中,我认为你最接近这个。

我个人建议在处理嵌套的 ASP.NET 控件时使用 jQuery,它可以让生活变得更轻松。

但是,如果您希望使用原始 javascript,您可以将 javascript 放在项目模板中(因此每个项目都重复),然后执行以下操作:

document.getElementById(<%=ControlID %>);

然后ControlID在您的代码中作为全局变量,并在dv数据绑定上设置 this 的值:

ControlID = ((DropDownList)e.Item.FindControl("ddlTrust")).ClientID;
于 2012-08-01T15:24:45.063 回答