可以用以下变通的方法实现用JavaScript调用服务器端的事件方法
1、增加如下JavaScript方法
这个就是将Asp.Net 中生成的脚本Copy过来,嘿嘿,很贼哦。
function __doPostBack(eventTarget, eventArgument)
{
var theform;
if (window.navigator.appName.toLowerCase().indexOf("microsoft") -1)
{
theform = document.Form1;
}
else
{
theform = document.forms["Form1"];
}
theform.__EVENTTARGET.value = eventTarget.split("$").join(":");
theform.__EVENTARGUMENT.value = eventArgument;
theform.submit();
}
//以下就是要从JavaScript中通知服务器端,你该干活了
function NotifyServer()
{
//.可以做一些设置,判断
Button1是服务器控件的ID,'abc' 可以自己设置,这个我需要给服务器传递一些消息数据,平时直接用'即可
__doPostBack('Button1','abc')
}
2、aspx 页面
要增加 以下两个隐藏字段
input type="hidden" name="__EVENTTARGET"
input type="hidden" name="__EVENTARGUMENT"
asp:Button id="Button1" runat="server" Text="Button" Visible="False"/asp:Button
这里就是要执行Button1 的后台代码,同时要将他的Visible 设置成 False ,(虽然资料说 不能将Enable 设置成False,但是我试了一下 将Enabled设置成False还是可以用的
同时增加一个
input type="button" id="but" onclick="NotifyServer()" value="ServerExecute" ,执行服务器代码
3、aspx.vb 页面代码
Response.Write("alert('" & Request("__EVENTARGUMENT").ToString() & "'"); ")
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)这里的Request("__EVENTARGUMENT").ToString() 就是'abc'的内容
4、注意事项
(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)用此种方法,页面中不能有AutoPost=True 的服务器控件,因为有AutoPost=True的控件的页面系统会自动生成以上的代码(2个hidden控件,还有一个__doPostBack函数),如果你的页面中 有AutoPost=True的服务器控件,那么你不需要加以上的代码(2个hidden控件,还有一个__doPostBack函数),直接用__doPostBack函数吧