function ChangeValue(p, c) {
alert(p + "__" + c);
}
<asp:DropDownList ID="ddlParentCost" runat="server" onchange="ChangeValue('<%= ddlParentCost.ClientID%>','<%= ddlChildCost.ClientID%>')">
</asp:DropDownList>
<asp:DropDownList ID="ddlChildCost" runat="server">
</asp:DropDownList>
上面的这两个控件我是放在用户控件里。
我改变ddlParentCost的时候触发onchange客户端事件,
不过这样写错了,弹出的对话框的信息也不显示控件的id,我查看生成的html代码变成
<select name="SelCostType1$ddlParentCost" id="SelCostType1_ddlParentCost" onchange="ChangeValue('<%= ddlParentCost.ClientID%>','<%= ddlChildCost.ClientID%>')">
请问我要怎么修改
9 个解决方案
#1
不能再 HTML 里面 用<% %>
你可以在 function ChangeValue(p, c) {
document.getElementById('<%= ddlParentCost.ClientID%>');
document.getElementById('<%= ddlChildCost.ClientID%>');
alert(p + "__" + c);
}
你可以在 function ChangeValue(p, c) {
document.getElementById('<%= ddlParentCost.ClientID%>');
document.getElementById('<%= ddlChildCost.ClientID%>');
alert(p + "__" + c);
}
#2
我没在html写啊,我是在aspx页面里写的,嗨朋友,看好题目
#3
Attributes.Add("oncgange","ChangeValue("+ddlParentCost.ClientID+",...)")
#4
你可换种思路做。点击父下拉为子下拉选值?
#5
下拉列表的ID都是唯一的,有必要再传过去?
#6
你的 onchange="ChangeValue('<%= ddlParentCost.ClientID%>' 有两个问题:
1. 在服务器控件属性中,应该使用绑定表达式 onchange="<%# ..... %>" 这种形式。特别是,当表达式内容比较复杂时,可以采取比较“万能”的做法,把它独立出来。
2. 绑定表达式要想进行计算,你要使用 DataBind() 方法来执行它。
1. 在服务器控件属性中,应该使用绑定表达式 onchange="<%# ..... %>" 这种形式。特别是,当表达式内容比较复杂时,可以采取比较“万能”的做法,把它独立出来。
onchange='<%# GetScript() %>'
protected string GetScript()
{
return string.Format("alert('{0}');", this.ddlParentCost.ClientID);
}
2. 绑定表达式要想进行计算,你要使用 DataBind() 方法来执行它。
protected void Page_PreRender(object sender, EventArgs e)
{
this.ddlParentCost.DataBind();
}
#7
嗯,你的是两个参数,在GetScript中按需返回一个javacript就行了。
#8
结贴快了点,没注意看还有回帖
#9
可不唯一哦,如果你一个页面嵌套多个用户控件的话,他的ID是不一样的
#1
不能再 HTML 里面 用<% %>
你可以在 function ChangeValue(p, c) {
document.getElementById('<%= ddlParentCost.ClientID%>');
document.getElementById('<%= ddlChildCost.ClientID%>');
alert(p + "__" + c);
}
你可以在 function ChangeValue(p, c) {
document.getElementById('<%= ddlParentCost.ClientID%>');
document.getElementById('<%= ddlChildCost.ClientID%>');
alert(p + "__" + c);
}
#2
我没在html写啊,我是在aspx页面里写的,嗨朋友,看好题目
#3
Attributes.Add("oncgange","ChangeValue("+ddlParentCost.ClientID+",...)")
#4
你可换种思路做。点击父下拉为子下拉选值?
#5
下拉列表的ID都是唯一的,有必要再传过去?
#6
你的 onchange="ChangeValue('<%= ddlParentCost.ClientID%>' 有两个问题:
1. 在服务器控件属性中,应该使用绑定表达式 onchange="<%# ..... %>" 这种形式。特别是,当表达式内容比较复杂时,可以采取比较“万能”的做法,把它独立出来。
2. 绑定表达式要想进行计算,你要使用 DataBind() 方法来执行它。
1. 在服务器控件属性中,应该使用绑定表达式 onchange="<%# ..... %>" 这种形式。特别是,当表达式内容比较复杂时,可以采取比较“万能”的做法,把它独立出来。
onchange='<%# GetScript() %>'
protected string GetScript()
{
return string.Format("alert('{0}');", this.ddlParentCost.ClientID);
}
2. 绑定表达式要想进行计算,你要使用 DataBind() 方法来执行它。
protected void Page_PreRender(object sender, EventArgs e)
{
this.ddlParentCost.DataBind();
}
#7
嗯,你的是两个参数,在GetScript中按需返回一个javacript就行了。
#8
结贴快了点,没注意看还有回帖
#9
可不唯一哦,如果你一个页面嵌套多个用户控件的话,他的ID是不一样的