【问题标题】:Print Multiple panels using javascript in asp.net c#在asp.net c#中使用javascript打印多个面板
【发布时间】:2015-04-28 10:03:36
【问题描述】:

我的页面中有 3 个面板,我希望每个面板打印在不同的页面中,而不是在同一页面中。(我的意思是第 1 页的面板 1 和第 2 页的面板 2 和第 3 页的面板 3)。 现在发生的事情是第一个面板被打印出来,而面板 2 被打印在同一页上。 如何在不同的单独页面中打印每一个?

这是 JavaScript 代码:

 <script type = "text/javascript">

       function PrintPanel() {

           var panel = document.getElementById("<%=Panel1.ClientID %>");
           var panel2 = document.getElementById("<%=Panel2.ClientID %>");
           var panel3 = document.getElementById("<%=Panel3.ClientID %>");


           var printWindow = window.open('', '', 'scrollbars=yes,     resizable=yes, width=800, height=500');

          printWindow.document.write('<html><head><title>My Title</title>');

        printWindow.document.write('</head><body >');

        printWindow.document.write(panel.innerHTML);
        printWindow.document.write(panel2.innerHTML);
        printWindow.document.write(panel3.innerHTML);             
        printWindow.document.write('</body></html>');

        printWindow.document.close();

        setTimeout(function () {

            printWindow.print();

        }, 500);

          return false;

    }

</script>

【问题讨论】:

  • 我更新了我的问题以获得代码
  • 它们在同一个窗口中打开的事实是因为您对它们都使用了相同的printWindow 对象。因此,它使用相同的窗口来编写每个面板。做一个循环或制作单独的窗口对象并尝试。
  • 但它会打开窗口 3 次,这是我不想要的!
  • 那么这里的 3 个单独的页面是什么意思?
  • @user1947393,您是指打印机打印的不同页面吗?每个面板应该在不同的打印机页面上?

标签: javascript c# asp.net printing panel


【解决方案1】:

您必须创建三个单独的窗口来打印如下面板-

<script type = "text/javascript">
    function PrintPanel() {
    var panel1 = "<h1>Test1</h1>";
    var panel2 = "<h1>Test2</h1>";
    var panel3 = "<h1>Test3</h1>";

    var printWindow = window.open('', '', 'scrollbars=yes,resizable=yes,width=800,height=500');

    var iframe1 = document.createElement('iframe');
    iframe1.id = 'iframe1';
    iframe1.name = 'iframe1';
    printWindow.document.body.appendChild(iframe1);
    iframe1.contentWindow.document.write(panel1);

    var iframe2 = document.createElement('iframe');
    iframe2.id = 'iframe2';
    iframe2.name = 'iframe2';
    printWindow.document.body.appendChild(iframe2);
    iframe2.contentWindow.document.write(panel2);

    var iframe3 = document.createElement('iframe');
    iframe3.id = 'iframe3';
    iframe3.name = 'iframe3';
    printWindow.document.body.appendChild(iframe3);
    iframe3.contentWindow.document.write(panel3);

    printWindow.document.close();
    setTimeout(function () {
        for (var k = 0; k < printWindow.frames.length; k++) {
            printWindow.frames[k].focus();
            printWindow.frames[k].print();
        }
    }, 500);
    return false;
}
</script>

【讨论】:

  • 应该已经阅读了上面的评论。会节省您的时间。
  • 没问题。 OP正在尝试其他方法。这是首先想到的。 :)
  • 是的,我认为他希望将三个面板打印在单独的页面上,只是一个想法:)
  • 是的,我希望将三个面板打印在单独的页面上并打开一个窗口进行打印。我的页面就像 3 个部分,每个部分都在一个面板中,我希望它们全部同时打印,但每个部分都在单独的页面上。如果我要使用三个单独的窗口,这意味着该窗口将被打开 3 次,这对用户来说不像是一个文档。
  • @user1947393,对不起,我昨天没有时间研究这个,但我已经更新了代码。在这种情况下,您需要有多个 iframe 来保留面板的单独 html,然后单独打印它们。请注意,您将获得三个用于打印每个 iframe 的对话框,您不能简单地使用 javascript 进行限制。希望这会有所帮助:)
猜你喜欢
  • 2012-02-08
  • 2018-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多