js代码怎么从后台CS文件中发送到前台页面中,并执行?

问题描述

我做的是一个表格打印页面,用户填写数据的同时,数据上传到服务器中,并调用下面的打印代码,打印表格。我前台页面中用了“UpdatePanel”protectedvoidbtnSave_Click(objectsender,EventArgse){StringBuildersb=newStringBuilder();sb.Append("<scriptlanguage="javascript"type="text/javascript">");sb.Append("functionPrintOneURL(){");sb.Append("varLODOP;");sb.Append("LODOP=getLodop();");sb.Append("LODOP.PRINT_INIT("预付审批表");");sb.Append("LODOP.SET_PRINT_PAGESIZE(1,0,0,"A4");");sb.Append("LODOP.PRINT_INITA(0,0,800,1124,"预付审批表");");sb.Append("LODOP.ADD_PRINT_SETUP_BKIMG("<imgborder='0'src='BJ.jpg'>");");sb.Append("LODOP.SET_SHOW_MODE("BKIMG_PRINT",true);");sb.Append("LODOP.SET_PRINT_STYLE("FontSize",11);");sb.Append("LODOP.ADD_PRINT_TEXT(10,10,600,38,"第一行第二行");");sb.Append("LODOP.SET_SAVE_MODE("QUICK_SAVE",true);");sb.Append("LODOP.PREVIEW();");sb.Append("returnfalse;");sb.Append("};");sb.Append("</script>");//Response.Write(sb);JsStr.Text=sb.ToString();//stringcode="<script>alert('123')</script>";//ClientScript.RegisterStartupScript(this.GetType(),"myJs",code,true);ScriptManager.RegisterStartupScript(uid,uid.GetType(),"","PrintOneURL();",true);}

解决方案

解决方案二:
UpdatePanel不能使用无刷新机制,像你这种写法,页面要刷新js才能执行。
解决方案三:
protectedvoidbtnSave_Click(objectsender,EventArgse){StringBuildersb=newStringBuilder();sb.AppendLine("varLODOP;");sb.AppendLine("LODOP=getLodop();");sb.AppendLine("LODOP.PRINT_INIT("预付审批表");");sb.AppendLine("LODOP.SET_PRINT_PAGESIZE(1,0,0,"A4");");sb.AppendLine("LODOP.PRINT_INITA(0,0,800,1124,"预付审批表");");sb.AppendLine("LODOP.ADD_PRINT_SETUP_BKIMG("<imgborder='0'src='BJ.jpg'>");");sb.AppendLine("LODOP.SET_SHOW_MODE("BKIMG_PRINT",true);");sb.AppendLine("LODOP.SET_PRINT_STYLE("FontSize",11);");sb.AppendLine("LODOP.ADD_PRINT_TEXT(10,10,600,38,"第一行第二行");");sb.AppendLine("LODOP.SET_SAVE_MODE("QUICK_SAVE",true);");sb.AppendLine("LODOP.PREVIEW();");ScriptManager.RegisterStartupScript(this.Page,this.Page.GetType(),"print",sb.ToString(),true);}

解决方案四:
你这里的问题在于JsStr.Text=sb.ToString();这句。这跟什么UpdatePanel没有关系。只有刚刚加载页面时才会去那样执行javascript代码。但是当页面渲染完毕,你再动态替换某个htmlelement内部部分的字符串,这种东西就不会被作为javascript再次被执行一遍了。
解决方案五:
例如你还可以写成这样StringBuildersb=newStringBuilder();sb.Append("functionPrintOneURL(){");sb.Append("varLODOP;");sb.Append("LODOP=getLodop();");sb.Append("LODOP.PRINT_INIT("预付审批表");");sb.Append("LODOP.SET_PRINT_PAGESIZE(1,0,0,"A4");");sb.Append("LODOP.PRINT_INITA(0,0,800,1124,"预付审批表");");sb.Append("LODOP.ADD_PRINT_SETUP_BKIMG("<imgborder='0'src='BJ.jpg'>");");sb.Append("LODOP.SET_SHOW_MODE("BKIMG_PRINT",true);");sb.Append("LODOP.SET_PRINT_STYLE("FontSize",11);");sb.Append("LODOP.ADD_PRINT_TEXT(10,10,600,38,"第一行第二行");");sb.Append("LODOP.SET_SAVE_MODE("QUICK_SAVE",true);");sb.Append("LODOP.PREVIEW();");sb.Append("returnfalse;");sb.Append("};");sb.Append("PrintOneURL();");ScriptManager.RegisterStartupScript(uid,uid.GetType(),"",sb.ToString(),true);

总之,使用UpdatePanel当然是可以执行js代码,包括你也可以在浏览器端去定义或者重新定义一个自定义javascript函数。单就不要使用JsStr.Text=sb.ToString();这种形式就可以了。

时间: 2024-11-05 14:51:17

js代码怎么从后台CS文件中发送到前台页面中,并执行?的相关文章

我在后台.CS文件中想通过checkBox的 name

问题描述 <td><inputtype="checkbox"name="serverContent"value="DM"runat="server"/>DM<inputtype="checkbox"name="serverContent"value="EDM"runat="server"/>EDM<inpu

不用js代码,只写cs代码怎样关闭一个aspx页面?

问题描述 不用js代码,只写cs代码怎样关闭一个aspx页面?写window.close():老弹出关闭对话框,而我的程序不想让弹出对话框. 解决方案 解决方案二:帮顶!关注中!解决方案三:无论如何都必须用客户端代码,就算客户端代码是服务端代码输出的,直接的服务端是没法控制客户端浏览器的.要想window.close()不提示要用到组件.解决方案四:可以写在buttonOnClient中解决方案五:写window.close():老弹出关闭对话框,而我的程序不想让弹出对话框.那你就这么写:win

在一个页面点击按钮通过js代码 进入到后台方法,从方法再返回到这个页面,页面样式没有了 如何解决

问题描述 在一个页面点击按钮通过js代码 进入到后台方法,从方法再返回到这个页面,页面样式没有了 如何解决 在一个页面点击按钮通过js代码 进入到后台方法,从方法再返回到这个页面,页面样式没有了 如何解决 解决方案 应该是路径问题. 如果要到后台处理,再返回的,建议使用ajax,不要整个页面刷新 解决方案二: 肯定是返回的时候相对路径发生了变化,请问是使用springMVC 生成freemarker 解析的视图吗? 解决方案三: 页面引用的样式的路径是相对路径是吗? 解决方案四: 在页面按钮下面

js中iframe框架子页面中调用父窗口函数

分两种情况: 第一种:在iframe子页面调用父页面js函数: 子页面调用父页面函数只需要写上window.praent就可以了.比如调用a()函数,可以写成:  代码如下 复制代码 window.praent.a(); a()为方法: 第二种:在iframe子父页面调用子页面js函数: 这个要稍微复杂些,我们可以用:  代码如下 复制代码 document.getElementById('ifrtest').contentWindow.b(); 注:ifrtest是iframe框架的id,b(

java-使用servlet,jdbc将mysql中数据显示在jsp页面中,且实现直接更新数据库数据

问题描述 使用servlet,jdbc将mysql中数据显示在jsp页面中,且实现直接更新数据库数据 我从网上找了几篇,大多都是在JSP操作的,我想仿照http://blog.csdn.net/kakukeme/article/category/819230 该网址的例子做,但是数据却没有显示出来,所以想问下各位有没完整的可以运行的实例,给我一个. 解决方案 参考一下吧:http://download.csdn.net/detail/qq_19558705/9393750 解决方案二: ?用se

后台实时上传数据至前台页面

问题描述 请教各位,现在后台程序会实时接收到一些数据,现在想把这些接收到的数据在前台页面实时显示,请问有什么好的解决方法,如果有的话,麻烦说下大概的流程,非常感谢! 解决方案 可以使用Ajax长连接的技术实现.Ajax长连接模式,它的刷新是根据数据来执行的,如果有新数据返回,接收并解析显示数据,然后发起新的Ajax请求,如果一段时间内,用户没有操作,则连接处于睡眠状态,一直等待有用户输入或者请求超时,然后发起下个Ajax请求.这样做的好处是,每个消息都会即时推送到客户端,延迟极少:另外每次请求都

在Word 2007文档中设置图片在页面中的位置

Word2007内置了10种图片位置,用户可以通过选择这些内置的图片位置来确定图片在Word2007文档中 的准确位置.一旦确定这些位置,则无论文字和段落位置如何改变,图片位置都不会发生变化.设置图片 位置的步骤如下所述: 第1步,打开Word2007文档窗口,选中需要设置位置的图片. 第2步,在"图片工具"功能区的"格式"选项卡中,单击"排列"分组中的"位置"按钮,并在位置 列表中选择合适的位置选项即可,如图20090219

ASP.net中,如何在一个Aspx页面中取得另一个静态页面的标题?

问题描述 RT.............我想获得一个HTML页面的<title>标题</title> 解决方案 解决方案二:读取文件->转换成字符串->取出想要的内容解决方案三:一楼的说的详细点.帮LZ UP一下...解决方案四:引用1楼silentwins的回复: 读取文件->转换成字符串->取出想要的内容 解决方案五:小弟是个新手,说的详细点可以吗?

在MVC中Controller为VIEW页面中的DropDownList赋值并锁定

首先是枚举对象的遍历 #region 类型列表框 typeitems = new List<SelectListItem>(); foreach (string i in Enum.GetNames(typeof(ServiceDocumentType))) { typeitems.Add(new SelectListItem { Text = ((ServiceDocumentType) Enum.Parse(typeof(ServiceDocumentType), i)).GetDescr