Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.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# 以横向模式打印网格视图_C#_Asp.net_Gridview_Printing - Fatal编程技术网

C# 以横向模式打印网格视图

C# 以横向模式打印网格视图,c#,asp.net,gridview,printing,C#,Asp.net,Gridview,Printing,我需要在横向模式下打印gridview,还需要分页(每页上要打印的标题行) 我尝试在CSS中使用@page属性,但由于浏览器兼容性问题,我无法使用它。所以这是不可能的 我使用PrintDocument类找到了一个替代方法,并将页面设置为横向模式 PrintDocument pd1 = new PrintDocument(); pd1.DefaultPageSettings.Landscape = true; //this works 尽管如此,我还是能够以横向模式打印文档打印文档类可以打印流,

我需要在横向模式下打印gridview,还需要分页(每页上要打印的标题行)

我尝试在CSS中使用
@page
属性,但由于浏览器兼容性问题,我无法使用它。所以这是不可能的

我使用
PrintDocument
类找到了一个替代方法,并将页面设置为横向模式

PrintDocument pd1 = new PrintDocument();
pd1.DefaultPageSettings.Landscape = true; //this works
尽管如此,我还是能够以横向模式打印文档<代码>打印文档类可以打印流,但不能打印呈现的HTML标记。我需要打印一个gridview,但我不知道该怎么做。有什么想法吗

此外,我还发现了另一种使用
PrintDocument
类打印gridview的方法,但这相当费劲。我循环浏览gridview数据,并使用System.Drawing的RectangleF类为gridview中的每个单元格绘制和手动绘制矩形和文本,并管理矩形尺寸和x/y偏移以绘制整个表格

PrintDocument pd1 = new PrintDocument();
pd1.DefaultPageSettings.Landscape = true;
pd1.PrintPage += printer_PrintPage;
pd1.Print();

//Draw a rectangle and fill text in it. 
//I Change values of xoffset, yoffset accordingly to draw a row one cell after other
protected void printer_PrintPage(object sender, PrintPageEventArgs e)
{
    var rectF1 = new RectangleF(xoffset, yoffset, cellWidth, cellHeight);
    e.Graphics.DrawString(propertyinfo.GetValue(obj, null).ToString(), font1, Brushes.Black, rectF1);
    e.Graphics.DrawRectangle(Pens.Black, Rectangle.Round(rectF1));
}
这是可行的,但很明显,这很费劲。但这也给我带来了问题,因为我需要手动分页数据并在每个页面上重新绘制标题行。而且,对于分页,我需要打印机页面大小和打印机分辨率,这显然是我无法获得的


有什么想法吗?如何在横向打印gridview,并在每页重复页眉行分页?有没有更简单更好的方法

我认为你在这里混搭各种场景。如果要从客户端(即访问您的网页的人)打印,则必须通过浏览器(如HTML)呈现“可打印”区域。当然,您会发现HTML打印非常有限,只有某些浏览器实现了正确的CSS打印规则

大多数开发人员通过动态创建并将用户重定向到PDF文档来解决这个问题,PDF文档作为一个插件,在当今非常流行。一句警告的话,您提到了“费力”的绘图/渲染,那么您应该期待几乎相同的编码体验

看看这篇文章,你可能会发现一个商业的更容易使用


最后,PrintDocument对象将只在服务器端运行,即在ASP.NET代码中运行,并且只在执行该代码的机器/服务器上打印-它不会在用户的打印机上打印。

我认为您在这里混合了各种场景。如果要从客户端(即访问您的网页的人)打印,则必须通过浏览器(如HTML)呈现“可打印”区域。当然,您会发现HTML打印非常有限,只有某些浏览器实现了正确的CSS打印规则

大多数开发人员通过动态创建并将用户重定向到PDF文档来解决这个问题,PDF文档作为一个插件,在当今非常流行。一句警告的话,您提到了“费力”的绘图/渲染,那么您应该期待几乎相同的编码体验

看看这篇文章,你可能会发现一个商业的更容易使用


最后,PrintDocument对象将只在服务器端运行,即在ASP.NET代码中运行,并且只在执行该代码的机器/服务器上打印-它不会在用户的打印机上打印。

谢谢。但是我的手段是有限的,我不能在项目中引入任何新的库,因为涉及到很多其他项目和团队,以及大量的批准、时间等——简言之,这是不实际的。感谢您指出有关PrintDocument类的详细信息。我可能没有读过这篇文章,它在开发环境中运行得很好,所以我确信这是正确的选择。谢谢。但是我的手段是有限的,我不能在项目中引入任何新的库,因为涉及到很多其他项目和团队,以及大量的批准、时间等——简言之,这是不实际的。感谢您指出有关PrintDocument类的详细信息。我可能没有读过这篇文章,它在开发环境中运行良好,所以我确信这是一条正确的道路。