</asp:DropDownList>
里面的值是从数据库中读出来的.直接绑定到DropDownList里的.....执行了JS事件.就执行不了后台事件了??WHY??
14 个解决方案
#1
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged" onchange="return change_box();" >
</asp:DropDownList>
#2
不行啊..放后前面后面都一样,调试就是进不了后台事件里面去
#3
onchange ==DropDownList1_SelectedIndexChanged
貌似是。
貌似是。
#4
没有触发onchange="return change_box();"这个
#5
你吧onchange 的事件去掉 看看
#6
这个事件里的方法都执行了.我把里面的值存到隐藏域里.到最后打印出隐藏域的值,结果有值,可就是进不了后台事件里.
#7
去掉的话.就可以执行后台的事件,但去掉就达不到要求.onchange和SelectedIndexChanged 咋不能共存了??
#8
有办法
在Dropdownlist1里增加一个别的方法来执行
比如
Page_Load方法下
if(!IsPostBack)
{
Dropdownlist1.Attributes.add("onchange","function(){return true}");
}
在Dropdownlist1里增加一个别的方法来执行
比如
Page_Load方法下
if(!IsPostBack)
{
Dropdownlist1.Attributes.add("onchange","function(){return true}");
}
#9
一个是前台事件,一个个是后台事件。。
后台事件不用AJAX就一定会刷新页面。。
2个事件你要同时发生,还真是麻烦那。。
后台事件不用AJAX就一定会刷新页面。。
2个事件你要同时发生,还真是麻烦那。。
#10
把DropDownList1_SelectedIndexChanged有没有加载啊?你把它放到Page_Load里看看
#11
● 服务器产生的脚本与手工添加的脚本冲突
服务器控件的服务器事件一般对应到客户端控件的相应事件,如Dropdownlist的SelectedIndexChanged事件对应HTML <Select>的onchange事件。如果你要手工增加一个onchange事件,则会在客户端产生两个onchange,浏览器就会忽略掉一个。比如用户希望每当改变了Dropdownlist中的选项就保存到数据库(虽然不是很常见,但确实有这种需要),但同时还希望提醒用户是否确实要做保存。显然,保存的代码应该放在SelectedIndexChanged事件中,而提醒的工作应该手工加一段onchange事件。结果就是两个onchange只能执行一个。正确的方法应该是添加一个不可见的保存按钮,在手工增加的onchange事件中调用此按钮生成的程序。
Page_Load方法如下:
Dim sCmd as string
sCmd=Page.GetPostBackClientHyperlink(btnUpdate, "")
If not page.isPostback then
Dropdownlist1.Attributes.add("onchange","ConfirmUpdate(""" & sCmd & """)")
End if
ConfirmUpdate函数如下
<Script language=”javascript”>
function ConfirmUpdate(cmd){
if confirm(“Are you sure to update?”)
eval(cmd);
}
</Script>
这里利用了Javascript eval函数来调用一个字符串中包含的命令。需注意的是包含命令的字符串不能用单引号括起来,因为自动生成的脚本中包括单引号,所以这里用两个双引号表示字符串本身的双引号。
服务器控件的服务器事件一般对应到客户端控件的相应事件,如Dropdownlist的SelectedIndexChanged事件对应HTML <Select>的onchange事件。如果你要手工增加一个onchange事件,则会在客户端产生两个onchange,浏览器就会忽略掉一个。比如用户希望每当改变了Dropdownlist中的选项就保存到数据库(虽然不是很常见,但确实有这种需要),但同时还希望提醒用户是否确实要做保存。显然,保存的代码应该放在SelectedIndexChanged事件中,而提醒的工作应该手工加一段onchange事件。结果就是两个onchange只能执行一个。正确的方法应该是添加一个不可见的保存按钮,在手工增加的onchange事件中调用此按钮生成的程序。
Page_Load方法如下:
Dim sCmd as string
sCmd=Page.GetPostBackClientHyperlink(btnUpdate, "")
If not page.isPostback then
Dropdownlist1.Attributes.add("onchange","ConfirmUpdate(""" & sCmd & """)")
End if
ConfirmUpdate函数如下
<Script language=”javascript”>
function ConfirmUpdate(cmd){
if confirm(“Are you sure to update?”)
eval(cmd);
}
</Script>
这里利用了Javascript eval函数来调用一个字符串中包含的命令。需注意的是包含命令的字符串不能用单引号括起来,因为自动生成的脚本中包括单引号,所以这里用两个双引号表示字符串本身的双引号。
#12
上面是对的,在同时触发事件时,前台的事件必须要到后台注册,你要是写到前台那肯定是只执行前台了。
#13
去掉return
onchange="change_box();"
onchange="change_box();"
#14
还有更好的方法,有需要跟我联系
#1
<asp:DropDownList ID="DropDownList1" runat="server" AutoPostBack="true" OnSelectedIndexChanged="DropDownList1_SelectedIndexChanged" onchange="return change_box();" >
</asp:DropDownList>
#2
不行啊..放后前面后面都一样,调试就是进不了后台事件里面去
#3
onchange ==DropDownList1_SelectedIndexChanged
貌似是。
貌似是。
#4
没有触发onchange="return change_box();"这个
#5
你吧onchange 的事件去掉 看看
#6
这个事件里的方法都执行了.我把里面的值存到隐藏域里.到最后打印出隐藏域的值,结果有值,可就是进不了后台事件里.
#7
去掉的话.就可以执行后台的事件,但去掉就达不到要求.onchange和SelectedIndexChanged 咋不能共存了??
#8
有办法
在Dropdownlist1里增加一个别的方法来执行
比如
Page_Load方法下
if(!IsPostBack)
{
Dropdownlist1.Attributes.add("onchange","function(){return true}");
}
在Dropdownlist1里增加一个别的方法来执行
比如
Page_Load方法下
if(!IsPostBack)
{
Dropdownlist1.Attributes.add("onchange","function(){return true}");
}
#9
一个是前台事件,一个个是后台事件。。
后台事件不用AJAX就一定会刷新页面。。
2个事件你要同时发生,还真是麻烦那。。
后台事件不用AJAX就一定会刷新页面。。
2个事件你要同时发生,还真是麻烦那。。
#10
把DropDownList1_SelectedIndexChanged有没有加载啊?你把它放到Page_Load里看看
#11
● 服务器产生的脚本与手工添加的脚本冲突
服务器控件的服务器事件一般对应到客户端控件的相应事件,如Dropdownlist的SelectedIndexChanged事件对应HTML <Select>的onchange事件。如果你要手工增加一个onchange事件,则会在客户端产生两个onchange,浏览器就会忽略掉一个。比如用户希望每当改变了Dropdownlist中的选项就保存到数据库(虽然不是很常见,但确实有这种需要),但同时还希望提醒用户是否确实要做保存。显然,保存的代码应该放在SelectedIndexChanged事件中,而提醒的工作应该手工加一段onchange事件。结果就是两个onchange只能执行一个。正确的方法应该是添加一个不可见的保存按钮,在手工增加的onchange事件中调用此按钮生成的程序。
Page_Load方法如下:
Dim sCmd as string
sCmd=Page.GetPostBackClientHyperlink(btnUpdate, "")
If not page.isPostback then
Dropdownlist1.Attributes.add("onchange","ConfirmUpdate(""" & sCmd & """)")
End if
ConfirmUpdate函数如下
<Script language=”javascript”>
function ConfirmUpdate(cmd){
if confirm(“Are you sure to update?”)
eval(cmd);
}
</Script>
这里利用了Javascript eval函数来调用一个字符串中包含的命令。需注意的是包含命令的字符串不能用单引号括起来,因为自动生成的脚本中包括单引号,所以这里用两个双引号表示字符串本身的双引号。
服务器控件的服务器事件一般对应到客户端控件的相应事件,如Dropdownlist的SelectedIndexChanged事件对应HTML <Select>的onchange事件。如果你要手工增加一个onchange事件,则会在客户端产生两个onchange,浏览器就会忽略掉一个。比如用户希望每当改变了Dropdownlist中的选项就保存到数据库(虽然不是很常见,但确实有这种需要),但同时还希望提醒用户是否确实要做保存。显然,保存的代码应该放在SelectedIndexChanged事件中,而提醒的工作应该手工加一段onchange事件。结果就是两个onchange只能执行一个。正确的方法应该是添加一个不可见的保存按钮,在手工增加的onchange事件中调用此按钮生成的程序。
Page_Load方法如下:
Dim sCmd as string
sCmd=Page.GetPostBackClientHyperlink(btnUpdate, "")
If not page.isPostback then
Dropdownlist1.Attributes.add("onchange","ConfirmUpdate(""" & sCmd & """)")
End if
ConfirmUpdate函数如下
<Script language=”javascript”>
function ConfirmUpdate(cmd){
if confirm(“Are you sure to update?”)
eval(cmd);
}
</Script>
这里利用了Javascript eval函数来调用一个字符串中包含的命令。需注意的是包含命令的字符串不能用单引号括起来,因为自动生成的脚本中包括单引号,所以这里用两个双引号表示字符串本身的双引号。
#12
上面是对的,在同时触发事件时,前台的事件必须要到后台注册,你要是写到前台那肯定是只执行前台了。
#13
去掉return
onchange="change_box();"
onchange="change_box();"
#14
还有更好的方法,有需要跟我联系