0

我在用 C# MVC 开发的视图上实现了分页。分页是用 AJAX 实现的。用户可以跨视图的页面选择记录,当他们单击页面上的“打印”按钮时,只会打印那些选定的记录。为了做到这一点,我将选定的记录移动到<div id="ToPrintContainer" >布局页面中的其中。

点击打印按钮

  1. 我将其克隆<div id="ToPrintContainer">到我的视图中。

  2. 设置.divPrintDetailedas的属性display:none

  3. window.print()

  4. 删除display:none.divPrintDetailed

  5. 最后删除或清空复制的记录。

<div id="ToPrintContainer" >将只包含用户想要打印的记录。

<div class ="divPrintDetailed">将包含所有记录。

问题出在打印上,我看到一个空白页

如果我评论 $('.copiedDivForPrint').empty();

我在打印窗口中看到了选定的记录,这是我想要发生的,但是复制的记录不会从视图中清除。

下面粘贴的是 jQuery 代码。

$('#btnPrnt').unbind('click').bind("click", function () {
// copy the selected records into the view 
          $("#divTestPrintContainer").clone().addClass('copiedDivForPrint').insertAfter('.StatsCriteria');
// don't display the entire records on print
        $('.divPrintDetailed').css({ 'display': 'none' });
        window.print();
        $('.divPrintDetailed').css({ 'display': '' });
        $('.copiedDivForPrint').empty();
        return false;
    });
4

2 回答 2

1

有时从完全不同的方向来更容易:

1)将您想要的内容复制到隐藏的 Iframe(包括您的样式表声明 - 制作一个虚拟页面包装存根)。

2) 从 iframe 打印。

于 2013-07-18T19:15:04.980 回答
0

window.print()修复问题后延迟执行代码。

setTimeout()来救我。

使固定 :

setTimeout(function () {
            $("#cpdDivFPrt").remove();
        }, 500);
于 2013-07-18T23:40:40.210 回答