無訫

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
DataGridView实现打印功能
  1 using System;
  2 using System.Drawing;
  3 using System.Collections;
  4 using System.ComponentModel;
  5 using System.Windows.Forms;
  6 using System.Data;
  7 
  8 namespace DataGridPrints
  9 {
 10     /// <summary>
 11     /// Form1 的摘要说明。
 12     /// </summary>
 13     public class Form1 : System.Windows.Forms.Form
 14     {
 15         private System.Windows.Forms.Button button1;
 16         private System.Windows.Forms.DataGrid dataGrid1;
 17         /// <summary>
 18         /// 必需的设计器变量。
 19         /// </summary>
 20         private System.ComponentModel.Container components = null;
 21 
 22         public Form1()
 23         {
 24             //
 25             // Windows 窗体设计器支持所必需的
 26             //
 27             InitializeComponent();
 28 
 29             //
 30             // TODO: 在 InitializeComponent 调用后添加任何构造函数代码
 31             //
 32         }
 33 
 34         /// <summary>
 35         /// 清理所有正在使用的资源。
 36         /// </summary>
 37         protected override void Dispose( bool disposing )
 38         {
 39             if( disposing )
 40             {
 41                 if (components != null) 
 42                 {
 43                     components.Dispose();
 44                 }
 45             }
 46             base.Dispose( disposing );
 47         }
 48 
 49         #region Windows 窗体设计器生成的代码
 50         /// <summary>
 51         /// 设计器支持所需的方法 - 不要使用代码编辑器修改
 52         /// 此方法的内容。
 53         /// </summary>
 54         private void InitializeComponent()
 55         {
 56             this.button1 = new System.Windows.Forms.Button();
 57             this.dataGrid1 = new System.Windows.Forms.DataGrid();
 58             ((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).BeginInit();
 59             this.SuspendLayout();
 60             // 
 61             // button1
 62             // 
 63             this.button1.Location = new System.Drawing.Point(58, 190);
 64             this.button1.Name = "button1";
 65             this.button1.Size = new System.Drawing.Size(90, 24);
 66             this.button1.TabIndex = 0;
 67             this.button1.Text = "Print";
 68             this.button1.Click += new System.EventHandler(this.button1_Click);
 69             // 
 70             // dataGrid1
 71             // 
 72             this.dataGrid1.DataMember = "";
 73             this.dataGrid1.HeaderForeColor = System.Drawing.SystemColors.ControlText;
 74             this.dataGrid1.Location = new System.Drawing.Point(38, 43);
 75             this.dataGrid1.Name = "dataGrid1";
 76             this.dataGrid1.Size = new System.Drawing.Size(624, 121);
 77             this.dataGrid1.TabIndex = 1;
 78             // 
 79             // Form1
 80             // 
 81             this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
 82             this.ClientSize = new System.Drawing.Size(678, 303);
 83             this.Controls.Add(this.dataGrid1);
 84             this.Controls.Add(this.button1);
 85             this.Name = "Form1";
 86             this.Text = "Form1";
 87             this.Load += new System.EventHandler(this.Form1_Load);
 88             ((System.ComponentModel.ISupportInitialize)(this.dataGrid1)).EndInit();
 89             this.ResumeLayout(false);
 90 
 91         }
 92         #endregion
 93 
 94         /// <summary>
 95         /// 应用程序的主入口点。
 96         /// </summary>
 97         [STAThread]
 98         static void Main() 
 99         {
100             Application.Run(new Form1());
101         }
102 
103         private void Form1_Load(object sender, System.EventArgs e)
104         {
105             DataTable dt = SomeDataTable();
106             this.dataGrid1.DataSource = dt;
107             CreatStyle(this.dataGrid1);
108         }
109 
110         private void CreatStyle(DataGrid grid) 
111         { 
112             DataGridTableStyle style = new DataGridTableStyle();
113             DataTable dt = (DataTable) grid.DataSource;
114             style.MappingName = dt.TableName;
115             
116             for(int j = 0; j < dt.Columns.Count; j++) 
117             { 
118                 DataGridTextBoxColumn cs = new DataGridTextBoxColumn(); 
119                 cs.MappingName = dt.Columns[j].ColumnName; 
120                 cs.HeaderText = dt.Columns[j].ColumnName;
121                 cs.ReadOnly = true;
122                 style.GridColumnStyles.Add(cs); 
123             } 
124             grid.TableStyles.Clear(); 
125             grid.TableStyles.Add(style); 
126 
127         } 
128         private DataTable SomeDataTable() 
129         { 
130             
131             DataTable dt = new DataTable("MyTable"); 
132 
133             //add some columns 
134             int nCols = 5; 
135             for(int j = 0; j < nCols; ++j) 
136                 dt.Columns.Add(new DataColumn(string.Format("col{0}", j), typeof(string))); 
137             
138             //add some rows 
139             int nRows = 40; 
140             for(int i = 0; i < nRows; ++i) 
141             { 
142                 DataRow dr = dt.NewRow(); 
143                 for(int j = 0; j < nCols; ++j) 
144                     dr[j] = string.Format("row {0} col {1}", i, j); 
145                 dt.Rows.Add(dr); 
146             } 
147 
148             dt.DefaultView.AllowNew = false;//turn off append row 
149             return dt; 
150         }
151 
152         private void button1_Click(object sender, System.EventArgs e)
153         {
154             GridPrinter dgp=new GridPrinter(this.dataGrid1,0); 
155             string[] header={"AAAA","BBBB","CCCC","DDDD","EEEE"};
156             dgp.setHeader(header);//如果不用改原header就不用赋值。 
157             int[] colWidth = {20,20,20,20,20};
158             dgp.setColWidth(colWidth);
159             
160             int[] disType ={0,0,0,0,0,0};//设定Decimal打印类型,0代表左对齐
161             dgp.setDisplayType(disType);
162             
163             int[] titleDis = {0,0,0,0,0};//设置列标题对齐方式1代表右对齐,0代表左对齐,包含宽度为0的列
164             dgp.setTitleDisplay(titleDis);
165             dgp.Print(); 
166         }
167     }
168 }

 

posted on 2012-11-29 12:05  無訫  阅读(1291)  评论(0)    收藏  举报