2009-01-21 97 views
0

我有一個顯示項目列表的應用程序。打印模式彈出框的內容

用戶可以點擊一個項目,看到在一個模式彈出(居中DIV,使用JavaScript示出)其細節。我需要在該彈出框上有一個按鈕,以允許用戶僅打印出模式彈出窗口的內容。

這對於需要在只有IE7 +工作的內部應用程序。當用戶點擊模式彈出框上的打印按鈕時,該項目的狀態變爲「打印」(出於內部業務原因...)。

我使用ASP.NET和ASP.NET AJAX Control Toolkit ModalPopupExtender,但我猜測實現這一目標的技術將以瀏覽器爲中心,並且服務器技術不可知。

回答

3

你可以添加一個「NOPRINT」類名來一個div包裹一切你不希望打印。

如果你也想在主頁是沒有,你可以當用戶按下打印按鈕添加類名來包裝DIV和後刪除類名稱的對話框可打印。

@media print { 
.noprint { 
display:none 
} 
} 
0

你可以重定向到具有模式彈出的內容的可打印頁面。確保頁面在加載事件中有window.print()。一旦你的用戶到達那個頁面,你就可以標記出來。如果用戶到達那裏

會發生什麼,並取消打印?

0

試試這個

function PrintContent() { 

var DocumentContainer = document.getElementById('nameofDiv'); 
var WindowObject = window.open("", "PrintWindow", 
"width=750,height=650,top=50,left=50,toolbars=no,scrollbars=yes,status=no,resizable=yes"); 
WindowObject.document.write(); 
WindowObject.document.write('<link rel="stylesheet" type="text/css" href="path-to-my-stylesheet.css">') 
WindowObject.document.writeln(DocumentContainer.innerHTML); 
WindowObject.document.close(); 
WindowObject.focus(); 
WindowObject.print(); 
WindowObject.close(); 
} 

這將使用樣式表

0

要渲染出不同的風格彈出的內容打印出來的內容在另一個窗口(如不集中,寬度爲100%)我在打印時動態更新_foregroundElement(PopupControlID)和_backgroundElement(由彈出式擴展器創建)的位置。

var basePrint = window.print; 
window.print = function() { 
    var popup = $find('<%= [PopupExtenderID].ClientID %>'); 
    popup._backgroundElement.style.position = 'static'; 
    popup._foregroundElement.style.position = 'static'; 
    popup._layout(); 
    basePrint(); 
    // Restore settings for display 
    popup._backgroundElement.style.position = 'fixed'; 
    popup._foregroundElement.style.position = 'fixed'; 
    popup._layout(); 
    } 

注意:不適用於瀏覽器的打印按鈕。