我在ASP.NET中有一个页面。在此页面中,我有一个List<string>
,其中包含各种数据。我需要能够在客户端打印此信息。因此,如果登录用户单击打印按钮,则会显示一个对话框,从中可以选择设置,如打印机,横向/纵向,数字(如果是副本)等。这是我的代码:
private List<string> dataToBePrinted = new List<string>();
public void addDataToList(string text)
{
dataToBePrinted.Add(text);
}
protected void btnPrint_Click(object sender, EventArgs e)
{
//Print contents of dataToBePrinted to local printer here.
}
到目前为止,我只能按原样打印页面(包括所有控件,窗口等),但我只需要List<string>
中的信息。我怎么能做到这一点?
编辑:
好的,感谢所有的评论/答案。我得到了它的工作:
//When clicking "Print" data, put list in session variables and redirect to new blank page
protected void btnGruppenkalenderDrucken_Click(object sender, EventArgs e)
{
Session["Printing"] = lstData;
Response.Redirect("Printing.aspx");
}
//This is the code behind of the new blank page. Cast session variable back to list, then fill table
public partial class Printing : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
List<List<string>> lst = (List<List<string>>)Session["Printing"];
foreach (List<string> temp in lst)
{
TableRow row = new TableRow();
foreach (string data in temp)
{
TableCell cell = new TableCell();
cell.Text = data;
row.Cells.Add(cell);
}
tblData.Rows.Add(row);
}
}
}
}
//Markup of new page. I added button "btnPrint" that calls javascript for printing when clicked client side.
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Printing.aspx.cs" Inherits="WerIstWo.Printing" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Table ID="tblData" runat="server">
</asp:Table>
<asp:Button ID="btnPrint" runat="server" Text="Print" OnClientClick="javascript:window.print();"/>
</div>
</form>
</body>
</html>
现在我只需要格式化空白页面,一切顺利。
再次感谢!
答案 0 :(得分:1)
由于Web浏览器的设计方式,服务器(您的代码)无法直接访问客户端的打印机。相反,您可以使用“打印页面”的链接/按钮或仅包含所需信息的页面(该列表的内容)。然后,客户端可以打印该页面,选择他们自己的本地打印机。
您可以在提示用户打印的主体后面的打印页面中加入一些javascript。
window.print()
应该做你想做的事。
答案 1 :(得分:1)
我的建议是创建一个新页面,根据您的需要设置数据,将用户重定向到那里,然后在javascript 中调用windows.print()
。
答案 2 :(得分:0)
看看css媒体选择器。像这样定义css类:
.printable {
display:none;
}
@media print {
.noPrint {
display:none;
}
.printable {
display:block;
}
}
然后将此类添加到页面上的所有元素,但您将转储List数据的元素除外。这个元素应该有可打印的类。
参考: