Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将字符串变量的内容打印到本地打印机ASP.NET_C#_Asp.net_Printing - Fatal编程技术网

C# 将字符串变量的内容打印到本地打印机ASP.NET

C# 将字符串变量的内容打印到本地打印机ASP.NET,c#,asp.net,printing,C#,Asp.net,Printing,我在ASP.NET中有一个页面。在这个页面中,我有一个列表,其中包含各种数据。我需要能够在客户端打印此信息。因此,如果登录用户单击“打印”按钮,将显示一个对话框,从中可以选择设置,如打印机、横向/纵向、副本数量等。这是我的代码: private List<string> dataToBePrinted = new List<string>(); public void addDataToList(string text) { dataToBePrinted

我在ASP.NET中有一个页面。在这个页面中,我有一个
列表
,其中包含各种数据。我需要能够在客户端打印此信息。因此,如果登录用户单击“打印”按钮,将显示一个对话框,从中可以选择设置,如打印机、横向/纵向、副本数量等。这是我的代码:

 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.
 }
private List dataToBePrinted=new List();
公共void addDataToList(字符串文本)
{
dataToBePrinted.Add(文本);
}
受保护的无效btnPrint\u单击(对象发送者,事件参数e)
{
//在此处打印要打印到本地打印机的数据内容。
}
到目前为止,我只能按原样打印页面(使用所有控件、窗口等),但我只需要
列表中的信息。我怎样才能做到这一点

编辑:

好的,谢谢大家的评论/回答。我让它工作了:

//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>
//单击“打印”数据时,将列表放入会话变量并重定向到新的空白页
受保护的无效BTNGRUPPENKALENDRUCKEN_单击(对象发送方,事件参数e)
{
会话[“打印”]=lstData;
重定向(“Printing.aspx”);
}
//这是新空白页的代码隐藏。将会话变量强制转换回列表,然后填充表
公共部分类打印:System.Web.UI.Page
{
受保护的无效页面加载(对象发送方、事件参数e)
{
列表lst=(列表)会话[“打印”];
foreach(在lst中列出温度)
{
TableRow行=新TableRow();
foreach(临时文件中的字符串数据)
{
TableCell=新的TableCell();
cell.Text=数据;
行.单元格.添加(单元格);
}
tblData.Rows.Add(行);
}
}
}
}
//新页面的标记。我添加了按钮“btnPrint”,当点击客户端时,它调用javascript进行打印。
现在我只需要格式化空白页,一切都很好。


再次感谢

由于web浏览器的设计方式,服务器(您的代码)将无法直接访问客户端的打印机。相反,您可以有一个指向“打印页面”的链接/按钮,或者只有所需信息(该列表的内容)的页面。然后,客户端可以选择自己的本地打印机打印该页

您可以在打印页面的主体之后包含一些javascript,以提示用户打印


window.print()
应该做你想做的事。

我的建议是创建一个新页面,显示你想要的数据,将用户重定向到那里,然后用javascript调用
windows.print()
看看css媒体选择器。如下定义css类:

.printable {
  display:none;
}

@media print {
.noPrint {
    display:none;
 }
.printable {
    display:block;
 }
}
然后将该类添加到页面上的所有元素中,但要在其中转储列表数据的元素除外。此元素应具有可打印类

参考:


你的标题和问题似乎没有共同点。你真正的问题是什么?您的标题让人困惑。很抱歉,上周的另一个问题的标题被取代了。您使用的打印代码是什么,服务器端代码还是客户端代码,如:
window.Print()
?这里需要注意的重要一点是,服务器端代码不会让您在客户端打印方面走得很远,因此,您得到的答案正确地指的是JavaScript和/或css。对于JavaScript。这个页面必须在我的母版页中吗?还是我只需要作为一个“容器”来存储我想要打印的数据?它基本上是一个容器,以适应网页和浏览器的工作方式。除了在页面级别,您不能打印内容,因此您可以使用一个新的临时页面作为容器(良好的词语选择)来交付您想要打印的内容。