【技术贴】.NET的cs文件里调用javascript方法和一闪而过的解决方法
例子:我有一个按钮,是服务器控件,当我点击它之后,我需要往数据里面写入sql,写入完成之后返回一个结果,这个结果就用js的对话框给搞出来,我用的比较华丽点,用jquery的一个函数。所以我需要在CS里面调用这个函数,可是,因为这个按钮是服务器控件,会在点击按钮后触发回传事件,所以,当我写入这个语句Button1.Attributes.Add(“onclick”,”<script type='text/javascript'>ShowConfirm('确定','是否删除','Button4','',340,80);</script>"); ”) 的时候,一闪而过了!!
此时 只能这样玩了。
Page.ClientScript.RegisterStartupScript(this.GetType(), "key", "<script> ShowConfirm('确定','是否删除','Button4','',340,80);</script>");
这样就ok了。
另附别人的技术贴
尽管网络上调用方法很多,但经常都会出现不能执行的现象,现在列出我在应用中遇到问题: 1.Form 必须运行在 :runat="server" <form id="Form1" name="myform" action="#" method="post"
runat="server" > 2.函数必须定义在head里 <script type="text/javascript"> 3.C#里要写成如下的方式 Page.ClientScript.RegisterStartupScript(this.GetType(),
"key", "<script> newFile_load();</script>"); //下面的这个不可以 Page.RegisterStartupScript("keys", "<script>
newFile_load();</script>"); 具体的方法网上太容易找到了,我这里贴几个以供参考: 1。RegisterStartupScript用法 //<summary> 转自 http://helloouc.blog.163.com/blog/static/553052712010217114140869/?latestBlog
function newFile_load()
{
alert("开始新建文档!");
document.all.WebOffice1.LoadOriginalFile("","doc");
alert("终于建好了!");
}
</script>
public virtual void RegisterStartupScript(
string
key,
string script
);
参数
// 服务器端弹出alert对话框
// </summary>
//
<param name="str_message">提示信息,例子:"不能为空!"</param>
// <param
name="page">page类</param>
public void alert(string str_message,page
page)
{
page.registerstartupscript("","<script>alert('"+str_message+"');</script>");
}
// 服务器端弹出alert对话框,并使控件获得焦点
//
</summary>
// <param
name="str_ctl_name">获得焦点控件id值,比如:txt_name</param>
// <param
name="str_message">提示信息,例子:"请输入您姓名!"</param>
// <param
name="page">page类</param>
public void alert(string
str_ctl_name,string str_message,page
page)
{
page.registerstartupscript("","<script>alert('"+str_message+"');document.forms(0)."+str_ctl_name+".focus();
document.forms(0)."+str_ctl_name+".select();</script>");
}
// 服务器端弹出confirm对话框
// </summary>
//
<param name="str_message">提示信息,例子:"您是否确认删除!"</param>
// <param
name="btn">隐藏botton按钮id值,比如:btn_flow</param>
// <param
name="page">page类</param>
public void confirm(string
str_message,string btn,page
page)
{
page.registerstartupscript("","<script> if
(confirm('"+str_message+"')==true){document.forms(0)."+btn+".click();}</script>");
}
//
服务器端弹出confirm对话框,询问用户准备转向那些操作,包括“确定”和“取消”时的操作
// </summary>
//
<param
name="str_message">提示信息,比如:"成功增加数据,单击\"确定\"按钮填写流程,单击\"取消\"修改数据"</param>
//
<param name="btn_redirect_flow">"确定"按钮id值</param>
// <param
name="btn_redirect_self">"取消"按钮id值</param>
// <param
name="page">page类</param>
public void confirm(string
str_message,string btn_redirect_flow,string btn_redirect_self,page
page)
{
page.registerstartupscript("","<script> if
(confirm('"+str_message+"')==true){document.forms(0)."+btn_redirect_flow+".click();}else{document.forms(0)."+btn_redirect_self+".click();}</script>");
}
获得焦点
// 使控件获得焦点
// </summary>
// <param
name="str_ctl_name">获得焦点控件id值,比如:txt_name</param>
// <param
name="page">page类</param>
public void getfocus(string
str_ctl_name,page
page)
{
page.registerstartupscript("","<script>document.forms(0)."+str_ctl_name+".focus();
document.forms(0)."+str_ctl_name+".select();</script>");
}
//名称:redirect
//功能:子窗体返回主窗体
//参数:url
//返回值:空
//</summary>
public
void redirect(string url,page page)
{
if (
session["ifdefault"]!=(object)"default")
{
page.registerstartupscript("","<script>window.top.document.location.href='/webjx/"+url+"';</script>");
}
}