FineUI 官方论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

本论坛已关闭(禁止注册、发帖和回复)
请移步 三石和他的朋友们

FineUI首页 WebForms - MVC & Core - JavaScript 常见问题 - QQ群 - 十周年征文活动

FineUI(开源版) 下载源代码 - 下载空项目 - 获取ExtJS - 文档 在线示例 - 版本更新 - 捐赠作者 - 教程

升级到 ASP.NET Core 3.1,快、快、快! 全新ASP.NET Core,比WebForms还简单! 欢迎加入【三石和他的朋友们】(基础版下载)

搜索
查看: 5135|回复: 0
打印 上一主题 下一主题

同一个页面使用FineUI控件与打印组件Lodop

[复制链接]
跳转到指定楼层
楼主
发表于 2013-11-17 20:50:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


前几天,网友 ⑥阿太⑥ 在使用FineUI和打印组件 Lodop时遇到一个问题,在IE8下,每次调用完Lodop结束后会出现如下错误:
(弹出打印窗口时不会出错)

(关闭打印窗口时出错)

并且这个问题在IE9,Firefox,Chrome中都没出现。

前台代码:
  1. <form id="form1" runat="server">
  2.     <x:PageManager ID="PageManager1" runat="server" />
  3.     <x:Button Text="点击弹出对话框" runat="server" ID="btnHello" OnClick="btnHello_Click">
  4.     </x:Button>
  5.     </form>
复制代码
后台代码:
  1. public static string GetPrintHtmlJS(string title, int layout, string top, string left, string width, string height, string strHtml)
  2. {
  3.         var sb = new StringBuilder();
  4.         sb.AppendLine("        function PrintTable(title,layout,strHtml) {");
  5.         sb.AppendLine("            LODOP = getLodop(document.getElementById('LODOP_OB'), document.getElementById('LODOP_EM'));");
  6.         sb.AppendLine("            LODOP.PRINT_INIT(title);");
  7.         sb.AppendLine("            LODOP.SET_PRINT_PAGESIZE(layout, 0, 0, "A4");");
  8.         sb.AppendLine("            LODOP.ADD_PRINT_HTML(" + top + ", " + left + ", " + width + ", " + height + ", strHtml);");
  9.         sb.AppendLine("            LODOP.PREVIEW();");
  10.         sb.AppendLine("        };");
  11.         sb.AppendFormat("PrintTable('{0}',{1},'{2}');", title, layout, HttpUtility.JavaScriptStringEncode(strHtml));
  12.         return sb.ToString();
  13. }

  14. protected void btnHello_Click(object sender, EventArgs e)
  15. {
  16.         var title = "NLodop打印demo";
  17.         var strHtml = "你好 FineUI!请等待1秒钟以上";
  18.         PageContext.RegisterStartupScript(NLodop.GetPrintHtmlJS(title, 1, "10", "15", ""96%"", "1050", strHtml));
  19. }
复制代码


最后分析这个问题可能是在IE8下弹出打印窗口时阻止了浏览器的JavaScript运行,导致关闭时出错。

最简单的修正方法只需加个延迟就行了:
将:
  1. sb.AppendFormat("PrintTable('{0}',{1},'{2}');", title, layout, HttpUtility.JavaScriptStringEncode(strHtml));
复制代码

修改为:
  1. sb.AppendFormat("window.setTimeout(function(){{PrintTable('{0}',{1},'{2}');}},100);", title, layout, HttpUtility.JavaScriptStringEncode(strHtml));
复制代码

即可!




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|FineUI 官方论坛 ( 皖ICP备2021006167号-1 )

GMT+8, 2024-9-28 06:21 , Processed in 0.045457 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表