程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> 關於C# >> 使用.NET自帶的類實現DataGrid報表的打印代碼

使用.NET自帶的類實現DataGrid報表的打印代碼

編輯:關於C#
 

using System;
using System.Windows.Forms;
using System.Drawing;
using System.Drawing.Printing;
using System.Data;
using System.Collections;
using DataLibrary;

namespace ControlLibrary
{
/// <summary>
/// DataGrid打印
/// </summary>
public class DataGridPrinter
{
private PrintDocument ThePrintDocument;
private DataTable TheTable;
private DataGrid TheDataGrid;
public int RowCount = 0;
private const int kVerticalCellLeeway = 10;
public int PageNumber = 1;
public ArrayList Lines = new ArrayList();
public int header=0;
public int footer=0;
DataCatena DataCatena1;
public int PageWidth;
public int PageHeight;
public int TopMargin;
public int BottomMargin;
int GridWidth = 0;
public int LeftMargin;
public int RightMargin;
public string PaperName;
public int pagecount;
private int rows_page;
public bool showfooter;

public int bodylength
{
get
{
if(this.PageNumber<this.pagecount)
return (1+this.rows_page) * ((int)(TheDataGrid.Font.SizeInPoints) + kVerticalCellLeeway);
else
return (this.TheTable.Rows.Count + 1 -(this.rows_page*(this.PageNumber-1))) * ( (int)(TheDataGrid.Font.SizeInPoints) + kVerticalCellLeeway);
}
}

public DataGridPrinter(DataGrid aGrid, PrintDocument aPrintDocument,string theform,int Header,int Footer)
{
//
// TODO: Add constructor logic here
//
this.header=Header;
this.footer=Footer;
this.showfooter=true;
TheDataGrid = aGrid;
ThePrintDocument = aPrintDocument;
if(theform!="")
{
DataCatena1=new DataCatena();
DataView myDV=DataCatena1.GetDataView("select * from yh_bbdy where bm='"+theform +"'");

this.PaperName=myDV[0]["zm"].ToString();

PaperSize pkSize;

if(myDV[0]["fx"].ToString()=="True")
this.ThePrintDocument.DefaultPageSettings.Landscape=true;
else
this.ThePrintDocument.DefaultPageSettings.Landscape=false;

int found=0;
for (int i = 0; i < this.ThePrintDocument.PrinterSettings.PaperSizes.Count; i++)
{
pkSize = this.ThePrintDocument.PrinterSettings.PaperSizes[i];
if(pkSize.PaperName==this.PaperName)
{
this.ThePrintDocument.DefaultPageSettings.PaperSize=pkSize;
found=1;
i=this.ThePrintDocument.PrinterSettings.PaperSizes.Count;
if(this.ThePrintDocument.DefaultPageSettings.Landscape)
{
PageHeight = pkSize.Width;
PageWidth = pkSize.Height;
}
else
{
PageWidth = pkSize.Width;
PageHeight = pkSize.Height;
}
}
}

if(found==0)
{
if(this.ThePrintDocument.DefaultPageSettings.Landscape)
{
PageHeight = Int32.Parse(myDV[0]["zk"].ToString());
PageWidth = Int32.Parse(myDV[0]["zc"].ToString());
}
else
{
PageWidth = Int32.Parse(myDV[0]["zk"].ToString());
PageHeight = Int32.Parse(myDV[0]["zc"].ToString());
}
}

TopMargin = Int32.Parse(myDV[0]["sk"].ToString());
BottomMargin = Int32.Parse(myDV[0]["xk"].ToString());
RightMargin = Int32.Parse(myDV[0]["rightk"].ToString());
LeftMargin = Int32.Parse(myDV[0]["leftk"].ToString());
}
else
{
PageWidth = ThePrintDocument.DefaultPageSettings.PaperSize.Width;
PageHeight = ThePrintDocument.DefaultPageSettings.PaperSize.Height;
TopMargin = ThePrintDocument.DefaultPageSettings.Margins.Top;
BottomMargin = ThePrintDocument.DefaultPageSettings.Margins.Bottom;
RightMargin = ThePrintDocument.DefaultPageSettings.Margins.Right;
LeftMargin = ThePrintDocument.DefaultPageSettings.Margins.Left;
}

PageWidth -= this.LeftMargin ;
PageWidth -= this.RightMargin;

this.rows_page=(int)((float)(this.PageHeight-this.TopMargin-this.BottomMargin-this.footer-this.header)/(TheDataGrid.Font.SizeInPoints + kVerticalCellLeeway));

for (int k = 0; k < TheDataGrid.TableStyles[0].GridColumnStyles.Count; k++)
{
GridWidth += TheDataGrid.TableStyles[0].GridColumnStyles[k].Width; // TheTable.Columns[k].ToString();
}

}

public void DrawHeader(Graphics g)
{
SolidBrush ForeBrush = new SolidBrush(TheDataGrid.HeaderForeColor);
SolidBrush BackBrush = new SolidBrush(Color.White); //(TheDataGrid.HeaderBackColor);
Pen TheLinePen = new Pen(TheDataGrid.GridLineColor, 1);
StringFormat cellformat = new StringFormat();
cellformat.Trimming = StringTrimming.EllipsisCharacter;
cellformat.FormatFlags = StringFormatFlags.NoWrap | StringFormatFlags.LineLimit;
cellformat.Alignment= StringAlignment.Center;

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved