2

divの内容を出力する機能があります。私のaspxマークアップを共有しましょう。

<div>
<div id="printarea" runat="server">
</div>
<asp:Button ID="btnPrint" runat="server" Text="Print Div" OnClick="btnPrint_Click" />

OnClickイベントでは、innerhtmlがdivprintareaに設定されます。コードは次のとおりです。

 protected void btnPrint_Click(object sender, EventArgs e)
    {

        string divText = GenerateInPatientBill();// "content you want to print";
        printarea.InnerHtml = divText;

        ScriptManager.RegisterStartupScript(this, Page.GetType(), "script", "PrintDiv(" + printarea.ClientID + ");", true);
    }

printarea divのclientidをjavascript関数に渡して、印刷する必要があります。使用されるjavascript関数は

 function PrintDiv(printarea1) {
    alert($("#" + printarea1 + ""));
    var printContent = $("#" + printarea1 + "").html();
    alert(printContent);
    var popupWin = window.open('', '_blank', 'width=300,height=400,location=no,left=200px');
    popupWin.document.open();
    popupWin.document.write(printContent);
    popupWin.document.close();
    popupWin.focus();
    popupWin.print();
    popupWin.close();
}

2行目でjavascript構文エラーが発生しています。これについて教えてください。

4

2 に答える 2

1

以下のコードを試してください。

function printDiv(DivIdToPrint) 
{ 
  var divToPrint= document.getElementById('DivIdToPrint'); 
  var newWin=window.open('','Print-Window','width=100,height=100'); 
  newWin.document.open(); 
  newWin.document.write('<html><body onload="window.print()">'+divToPrint.innerHTML+'</body></html>'); 
  newWin.document.close(); 
  setTimeout(function(){newWin.close();},10); 
}

この JavaScript は、div のコンテンツを含む新しいウィンドウを開き、それを印刷してから、そのウィンドウを閉じます。最後の行、これはそこでタイムアウトを設定する必要があります。そうしないと、印刷が行われる前に IE ウィンドウが閉じられます。

それ以外の場合は、 jQuery プラグインを使用できます

于 2012-11-28T12:17:01.210 に答える
0

新しく開いたウィンドウでは printContent を使用できないため、このエラーが発生しています。これを克服するには、div コンテンツまたはマークアップを新しく開いたウィンドウに渡してから印刷する必要があります。

于 2012-11-28T12:15:53.740 に答える