我需要打印在横向模式下一个GridView,也需要分页(在每一页上打印的标题行)横向模式打印一个GridView
我试图用我的CSS的@page
财产,但我不能使用这是因为浏览器兼容性问题。所以这是排除。
我找到一个替代使用PrintDocument
类和页面设置为横向模式
PrintDocument pd1 = new PrintDocument();
pd1.DefaultPageSettings.Landscape = true; //this works
虽然,这个工作,我能够打印的文档以横向模式。 PrintDocument
类可以打印一个流,但不能呈现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,并在每个页面中重复标题行分页?有没有更简单和更好的方法来做到这一点?
谢谢。但我的手段是有限的,我不能将任何新图书馆引入到项目中,因为涉及到的很多其他项目和团队以及涉及的大量批准,时间等 - 简而言之,它并不实用。感谢您指出有关PrintDocument类的详细信息。我也许没有阅读精美版本,并且在开发环境中工作得很好,所以我确信这是一条路。 – pavanred 2012-02-22 16:10:56