日期:2014-05-19  浏览次数:20420 次

马上要炒我了,编程方式执行按纽点击事件的问题.
ASP.NET2.0页面a.aspx上有个按钮btnSave,我想在a.aspx.cs文件中通过编程的方式可以执行btnSave按纽的click事件,代码怎么写.a.aspx是在一个frame里面显示的.
我用的this.Response.Write(@ " <script> document.getElementById(btnSave).click(); </script> ");,总是提示document.getElementById(btnSave)为空,怎么解决啊?

------解决方案--------------------
注意输出位置

Page.Response.Write( " <script> var response; </script> ");

Page.RegisterStartupScript( "RegisterStartupScript ", " <script> var RegisterStartupScript; </script> ");

Page.RegisterClientScriptBlock( "RegisterClientScriptBlock ", " <script> var RegisterClientScriptBlock; </script> ");

Response.Write输出后的位置在源文件的第一行.

RegisterStartupScript输出后的位置会在 <form> 的下一行(在asp.net自带的脚本和一些隐藏域之下).

RegisterClientScriptBlock输出后的位置会在 </form> 的上一行.

RegisterClientScriptBlock的原型与RegisterStartupScript相同,两个函数不同在于将其包含的脚本代码写入到HTML文件的不同位置.RegisterClientScriptBlock在 Page 对象的 元素的开始标记后立即发出客户端脚本,RegisterStartupScript则是在Page 对象的 元素的结束标记之前发出该脚本。如果你的脚本有与页面对象(doucument对象)进行交互的语句,则推荐使用RegisterStartupScript,反之如果要想客户端脚本尽可能早的执行,则可以使用RegisterClientScriptBlock或Response.Write。

RegisterClientScriptBlock一般返回的是客户端函数的包装,而RegisterStartupScript返回得函数在document装载完成后会执行,类似于我们平时所说的body onload= "f() "里面的函数;这两个方法在客户端呈现的代码位置不同,RegisterClientScriptBlock在 <form runat=server> 之后,而RegisterStartupScript在 </form> 之前。