asp.net 服务器产生的脚本与手工添加的脚本冲突
2011-02-17 13:42
260 查看
服务器控件的服务器事件一般对应到客户端控件的相应事件,如Dropdownlist的SelectedIndexChanged事件对应HTML <Select>的onchange事件。如果你要手工增加一个onchange事件,则会在客户端产生两个onchange,浏览器就会忽略掉一个。比如用户希望每当改变了Dropdownlist中的选项就保存到数据库(虽然不是很常见,但确实有这种需要),但同时还希望提醒用户是否确实要做保存。显然,保存的代码应该放在SelectedIndexChanged事件中,而提醒的工作应该手工加一段onchange事件。结果就是两个 onchange只能执行一个。正确的方法应该是添加一个不可见的保存按钮,在手工增加的onchange事件中调用此按钮生成的程序。
Page_Load方法如下:
Dim sCmd as string
sCmd=Page.ClientScript.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>
注:ClientScriptManager.GetPostBackEventReference 方法和ClientScriptManager.GetPostBackClientHyperlink方法的功能是一样的,都是在客户端生成脚本,当控件的特定事件触发时,可以回发至服务器。
他们在客户端的表现形式有点不同,GetPostBackClientHyperlink表现为:javascript:__doPostBack('mycontrol1','myanchor1'),GetPostBackEventReference 表现为::__doPostBack('mycontrol1','myanchor1')。
Page_Load方法如下:
Dim sCmd as string
sCmd=Page.ClientScript.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>
注:ClientScriptManager.GetPostBackEventReference 方法和ClientScriptManager.GetPostBackClientHyperlink方法的功能是一样的,都是在客户端生成脚本,当控件的特定事件触发时,可以回发至服务器。
他们在客户端的表现形式有点不同,GetPostBackClientHyperlink表现为:javascript:__doPostBack('mycontrol1','myanchor1'),GetPostBackEventReference 表现为::__doPostBack('mycontrol1','myanchor1')。
相关文章推荐
- 服务器产生的脚本与手工添加的脚本冲突
- 向 ASP.NET Web 服务器控件添加客户端脚本事件
- 向 ASP.NET Web 服务器控件添加客户端脚本事件
- 向 ASP.NET Web 服务器控件添加客户端脚本事件
- 用一个例子讲述如何向ASP.NET Web服务器按钮控件添加客户端脚本
- 在ASP.NET中使用JavaScript脚本添加认证
- ASP.NET 中抓取网页内容 并出现服务器提交了协议冲突. Section=ResponseHeader 解决方案
- 从 ASP.NET 服务器控件插入客户端脚本(引自MSDN中文网
- 绝对酷,如何解决asp.net中javascript脚本的问题(使用服务器控件执行客户端脚本)
- ASP.NET解决验证控件与JS脚本验证冲突
- 从 ASP.NET 服务器控件插入客户端脚本
- 从 ASP.NET 服务器控件插入客户端脚本
- asp.net页面中动态地添加javascript脚本
- 关于ASP.net中服务器控件的脚本问题
- Asp.Net 之 通过调用 WScript.Shell 启动本地 exe 程序时产生“ automation服务器不能创建对象 ”的错误
- ASP.NET 2.0中给DropDownList服务器控件添加项的新方法
- asp.net用jquery为服务器控件添加javascript处理
- ASP.NET : 为服务器控件或者页面添加异步行为
- ASP.NET Web页面是如何在Web服务器端产生的
- 在 ASP.NET WebForms/MVC 中利用 HttpModule 添加全局站点统计(CNZZ、百度统计、Google Analytics等)脚本