在C#里实现DATAGRID的打印预览和打印

qieyj [原作] 关键字 DATAGRID

很多人都在论坛里问,如何实现DATAGRID的打印预览和打印,现在我就把这方面的源代码告诉大家。这段代码也花费了我1个晚上的时间,呵呵!数据库是基于sql server2000自带的northwind。源代码如下:

using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
using System.Data.OleDb;

namespace DataGridPrint
{
    /// <summary>
    /// Summary description for Form1.
    /// </summary>
    public class Form1 : System.Windows.Forms.Form
    {
        private System.Windows.Forms.Panel panel1;
        private System.Windows.Forms.DataGrid dgTest;
        private System.Windows.Forms.Button btnFillDataGrid;
        private System.Windows.Forms.MainMenu mnuFile;
        private System.Windows.Forms.MenuItem menuItem1;
        private System.Windows.Forms.MenuItem miPrintPreview;
        private System.Windows.Forms.MenuItem miPrint;
        private System.Windows.Forms.MenuItem menuItem4;
        private System.Windows.Forms.MenuItem miExit;
        private System.Windows.Forms.DataGridTableStyle dgtsCustomers;
        private System.Windows.Forms.DataGridTextBoxColumn dataGridTextBoxColumn1;
        private System.Windows.Forms.DataGridTextBoxColumn dataGridTextBoxColumn2;
        private System.Windows.Forms.DataGridTextBoxColumn dataGridTextBoxColumn3;
        private System.Windows.Forms.DataGridTextBoxColumn dataGridTextBoxColumn4;
        private System.Windows.Forms.DataGridTextBoxColumn dataGridTextBoxColumn6;
        private System.Windows.Forms.DataGridTextBoxColumn dataGridTextBoxColumn7;
        private System.Windows.Forms.DataGridTextBoxColumn dataGridTextBoxColumn8;
        private System.Windows.Forms.DataGridTextBoxColumn dataGridTextBoxColumn9;
        private System.Windows.Forms.DataGridTextBoxColumn dataGridTextBoxColumn10;
        private System.Windows.Forms.DataGridTextBoxColumn dataGridTextBoxColumn11;
        private System.Windows.Forms.DataGridTextBoxColumn dataGridTextBoxColumn5;
        private System.Data.SqlClient.SqlDataAdapter sqlDataAdapter1;
        private System.Data.SqlClient.SqlCommand sqlSelectCommand1;
        private System.Data.SqlClient.SqlCommand sqlInsertCommand1;
        private System.Data.SqlClient.SqlCommand sqlUpdateCommand1;
        private System.Data.SqlClient.SqlCommand sqlDeleteCommand1;
        private System.Data.SqlClient.SqlConnection sqlConnection1;
        /// <summary>
        /// Required designer variable.
        /// </summary>
        private System.ComponentModel.Container components = null;

        public Form1()
        {
            //
            // Required for Windows Form Designer support
            //
            InitializeComponent();

            //
            // TODO: Add any constructor code after InitializeComponent call
            //
        }

        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                if (components != null)
                {
                    components.Dispose();
                }
            }
            base.Dispose(disposing);
        }

        #region Windows Form Designer generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.panel1 = new System.Windows.Forms.Panel();
            this.dgTest = new System.Windows.Forms.DataGrid();
            this.dgtsCustomers = new System.Windows.Forms.DataGridTableStyle();
            this.dataGridTextBoxColumn1 = new System.Windows.Forms.DataGridTextBoxColumn();
            this.dataGridTextBoxColumn2 = new System.Windows.Forms.DataGridTextBoxColumn();
            this.dataGridTextBoxColumn3 = new System.Windows.Forms.DataGridTextBoxColumn();
            this.dataGridTextBoxColumn4 = new System.Windows.Forms.DataGridTextBoxColumn();
            this.dataGridTextBoxColumn5 = new System.Windows.Forms.DataGridTextBoxColumn();
            this.dataGridTextBoxColumn6 = new System.Windows.Forms.DataGridTextBoxColumn();
            this.dataGridTextBoxColumn7 = new System.Windows.Forms.DataGridTextBoxColumn();
            this.dataGridTextBoxColumn8 = new System.Windows.Forms.DataGridTextBoxColumn();
            this.dataGridTextBoxColumn9 = new System.Windows.Forms.DataGridTextBoxColumn();
            this.dataGridTextBoxColumn10 = new System.Windows.Forms.DataGridTextBoxColumn();
            this.dataGridTextBoxColumn11 = new System.Windows.Forms.DataGridTextBoxColumn();
            this.btnFillDataGrid = new System.Windows.Forms.Button();
            this.mnuFile = new System.Windows.Forms.MainMenu();
            this.menuItem1 = new System.Windows.Forms.MenuItem();
            this.miPrintPreview = new System.Windows.Forms.MenuItem();
            this.miPrint = new System.Windows.Forms.MenuItem();
            this.menuItem4 = new System.Windows.Forms.MenuItem();
            this.miExit = new System.Windows.Forms.MenuItem();
            this.sqlDataAdapter1 = new System.Data.SqlClient.SqlDataAdapter();
            this.sqlSelectCommand1 = new System.Data.SqlClient.SqlCommand();
            this.sqlInsertCommand1 = new System.Data.SqlClient.SqlCommand();
            this.sqlUpdateCommand1 = new System.Data.SqlClient.SqlCommand();
            this.sqlDeleteCommand1 = new System.Data.SqlClient.SqlCommand();
            this.sqlConnection1 = new System.Data.SqlClient.SqlConnection();
            this.panel1.SuspendLayout();
            ((System.ComponentModel.ISupportInitialize)(this.dgTest)).BeginInit();
            this.SuspendLayout();
            // 
            // panel1
            // 
            this.panel1.Anchor = (((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
             | System.Windows.Forms.AnchorStyles.Left)
             | System.Windows.Forms.AnchorStyles.Right);
            this.panel1.Controls.AddRange(new System.Windows.Forms.Control[] {
                     this.dgTest});
            this.panel1.Location = new System.Drawing.Point(0, 9);
            this.panel1.Name = "panel1";
            this.panel1.Size = new System.Drawing.Size(788, 398);
            this.panel1.TabIndex = 1;
            // 
            // dgTest
            // 
            this.dgTest.DataMember = "";
            this.dgTest.Dock = System.Windows.Forms.DockStyle.Fill;
            this.dgTest.HeaderForeColor = System.Drawing.SystemColors.ControlText;
            this.dgTest.Name = "dgTest";
            this.dgTest.Size = new System.Drawing.Size(788, 398);
            this.dgTest.TabIndex = 0;
            this.dgTest.TableStyles.AddRange(new System.Windows.Forms.DataGridTableStyle[] {
                          this.dgtsCustomers});
            // 
            // dgtsCustomers
            // 
            this.dgtsCustomers.DataGrid = this.dgTest;
            this.dgtsCustomers.GridColumnStyles.AddRange(new System.Windows.Forms.DataGridColumnStyle[] {
                           this.dataGridTextBoxColumn1,
                           this.dataGridTextBoxColumn2,
                           this.dataGridTextBoxColumn3,
                           this.dataGridTextBoxColumn4,
                           this.dataGridTextBoxColumn5,
                           this.dataGridTextBoxColumn6,
                           this.dataGridTextBoxColumn7,
                           this.dataGridTextBoxColumn8,
                           this.dataGridTextBoxColumn9,
                           this.dataGridTextBoxColumn10,
                           this.dataGridTextBoxColumn11});
            this.dgtsCustomers.HeaderForeColor = System.Drawing.SystemColors.ControlText;
            this.dgtsCustomers.MappingName = "Customers";
            this.dgtsCustomers.ReadOnly = true;
            // 
            // dataGridTextBoxColumn1
            // 
            this.dataGridTextBoxColumn1.Format = "";
            this.dataGridTextBoxColumn1.FormatInfo = null;
            this.dataGridTextBoxColumn1.HeaderText = "Customer Id";
            this.dataGridTextBoxColumn1.MappingName = "CustomerId";
            this.dataGridTextBoxColumn1.NullText = "";
            this.dataGridTextBoxColumn1.Width = 75;
            // 
            // dataGridTextBoxColumn2
            // 
            this.dataGridTextBoxColumn2.Format = "";
            this.dataGridTextBoxColumn2.FormatInfo = null;
            this.dataGridTextBoxColumn2.HeaderText = "Company Name";
            this.dataGridTextBoxColumn2.MappingName = "CompanyName";
            this.dataGridTextBoxColumn2.NullText = "";
            this.dataGridTextBoxColumn2.Width = 200;
            // 
            // dataGridTextBoxColumn3
            // 
            this.dataGridTextBoxColumn3.Format = "";
            this.dataGridTextBoxColumn3.FormatInfo = null;
            this.dataGridTextBoxColumn3.HeaderText = "Contact Name";
            this.dataGridTextBoxColumn3.MappingName = "ContactName";
            this.dataGridTextBoxColumn3.NullText = "";
            this.dataGridTextBoxColumn3.Width = 125;
            // 
            // dataGridTextBoxColumn4
            // 
            this.dataGridTextBoxColumn4.Format = "";
            this.dataGridTextBoxColumn4.FormatInfo = null;
            this.dataGridTextBoxColumn4.HeaderText = "Contact Title";
            this.dataGridTextBoxColumn4.MappingName = "ContactTitle";
            this.dataGridTextBoxColumn4.NullText = "";
            this.dataGridTextBoxColumn4.Width = 170;
            // 
            // dataGridTextBoxColumn5
            // 
            this.dataGridTextBoxColumn5.Format = "";
            this.dataGridTextBoxColumn5.FormatInfo = null;
            this.dataGridTextBoxColumn5.HeaderText = "Address";
            this.dataGridTextBoxColumn5.MappingName = "Address";
            this.dataGridTextBoxColumn5.NullText = "";
            this.dataGridTextBoxColumn5.Width = 250;
            // 
            // dataGridTextBoxColumn6
            // 
            this.dataGridTextBoxColumn6.Format = "";
            this.dataGridTextBoxColumn6.FormatInfo = null;
            this.dataGridTextBoxColumn6.HeaderText = "City";
            this.dataGridTextBoxColumn6.MappingName = "City";
            this.dataGridTextBoxColumn6.NullText = "";
            this.dataGridTextBoxColumn6.Width = 150;
            // 
            // dataGridTextBoxColumn7
            // 
            this.dataGridTextBoxColumn7.Format = "";
            this.dataGridTextBoxColumn7.FormatInfo = null;
            this.dataGridTextBoxColumn7.HeaderText = "Region";
            this.dataGridTextBoxColumn7.MappingName = "Region";
            this.dataGridTextBoxColumn7.NullText = "";
            this.dataGridTextBoxColumn7.Width = 150;
            // 
            // dataGridTextBoxColumn8
            // 
            this.dataGridTextBoxColumn8.Format = "";
            this.dataGridTextBoxColumn8.FormatInfo = null;
            this.dataGridTextBoxColumn8.HeaderText = "Postal Code";
            this.dataGridTextBoxColumn8.MappingName = "PostalCode";
            this.dataGridTextBoxColumn8.NullText = "";
            this.dataGridTextBoxColumn8.Width = 150;
            // 
            // dataGridTextBoxColumn9
            // 
            this.dataGridTextBoxColumn9.Format = "";
            this.dataGridTextBoxColumn9.FormatInfo = null;
            this.dataGridTextBoxColumn9.HeaderText = "Country";
            this.dataGridTextBoxColumn9.MappingName = "Country";
            this.dataGridTextBoxColumn9.NullText = "";
            this.dataGridTextBoxColumn9.Width = 125;
            // 
            // dataGridTextBoxColumn10
            // 
            this.dataGridTextBoxColumn10.Format = "";
            this.dataGridTextBoxColumn10.FormatInfo = null;
            this.dataGridTextBoxColumn10.HeaderText = "Phone";
            this.dataGridTextBoxColumn10.MappingName = "Phone";
            this.dataGridTextBoxColumn10.NullText = "";
            this.dataGridTextBoxColumn10.Width = 125;
            // 
            // dataGridTextBoxColumn11
            // 
            this.dataGridTextBoxColumn11.Format = "";
            this.dataGridTextBoxColumn11.FormatInfo = null;
            this.dataGridTextBoxColumn11.HeaderText = "Fax";
            this.dataGridTextBoxColumn11.MappingName = "Fax";
            this.dataGridTextBoxColumn11.NullText = "";
            this.dataGridTextBoxColumn11.Width = 125;
            // 
            // btnFillDataGrid
            // 
            this.btnFillDataGrid.Anchor = (System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right);
            this.btnFillDataGrid.Location = new System.Drawing.Point(645, 426);
            this.btnFillDataGrid.Name = "btnFillDataGrid";
            this.btnFillDataGrid.Size = new System.Drawing.Size(133, 28);
            this.btnFillDataGrid.TabIndex = 2;
            this.btnFillDataGrid.Text = "&Fill DataGrid";
            this.btnFillDataGrid.Click += new System.EventHandler(this.btnFillDataGrid_Click);
            // 
            // mnuFile
            // 
            this.mnuFile.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
                     this.menuItem1});
            // 
            // menuItem1
            // 
            this.menuItem1.Index = 0;
            this.menuItem1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
                       this.miPrintPreview,
                       this.miPrint,
                       this.menuItem4,
                       this.miExit});
            this.menuItem1.Text = "&File";
            // 
            // miPrintPreview
            // 
            this.miPrintPreview.Index = 0;
            this.miPrintPreview.Text = "Print Pre&view";
            this.miPrintPreview.Click += new System.EventHandler(this.miPrintPreview_Click);
            // 
            // miPrint
            // 
            this.miPrint.Index = 1;
            this.miPrint.Text = "&Print";
            this.miPrint.Click += new System.EventHandler(this.miPrint_Click);
            // 
            // menuItem4
            // 
            this.menuItem4.Index = 2;
            this.menuItem4.Text = "-";
            // 
            // miExit
            // 
            this.miExit.Index = 3;
            this.miExit.Text = "E&xit";
            this.miExit.Click += new System.EventHandler(this.miExit_Click);
            // 
            // sqlDataAdapter1
            // 
            this.sqlDataAdapter1.DeleteCommand = this.sqlDeleteCommand1;
            this.sqlDataAdapter1.InsertCommand = this.sqlInsertCommand1;
            this.sqlDataAdapter1.SelectCommand = this.sqlSelectCommand1;
            this.sqlDataAdapter1.TableMappings.AddRange(new System.Data.Common.DataTableMapping[] {
                           new System.Data.Common.DataTableMapping("Table", "Customers", new System.Data.Common.DataColumnMapping[] {
                                new System.Data.Common.DataColumnMapping("CustomerID", "CustomerID"),
                                new System.Data.Common.DataColumnMapping("CompanyName", "CompanyName"),
                                new System.Data.Common.DataColumnMapping("ContactName", "ContactName"),
                                new System.Data.Common.DataColumnMapping("ContactTitle", "ContactTitle"),
                                new System.Data.Common.DataColumnMapping("Address", "Address"),
                                new System.Data.Common.DataColumnMapping("City", "City"),
                                new System.Data.Common.DataColumnMapping("Region", "Region"),
                                new System.Data.Common.DataColumnMapping("PostalCode", "PostalCode"),
                                new System.Data.Common.DataColumnMapping("Country", "Country"),
                                new System.Data.Common.DataColumnMapping("Phone", "Phone"),
                                new System.Data.Common.DataColumnMapping("Fax", "Fax")})});
            this.sqlDataAdapter1.UpdateCommand = this.sqlUpdateCommand1;
            // 
            // sqlSelectCommand1
            // 
            this.sqlSelectCommand1.CommandText = "SELECT CustomerID, CompanyName, ContactName, ContactTitle, Address, City, Region," +
             " PostalCode, Country, Phone, Fax FROM Customers";
            this.sqlSelectCommand1.Connection = this.sqlConnection1;
            // 
            // sqlInsertCommand1
            // 
            this.sqlInsertCommand1.CommandText = @"INSERT INTO Customers(CustomerID, CompanyName, ContactName, ContactTitle, Address, City, Region, PostalCode, Country, Phone, Fax) VALUES (@CustomerID, @CompanyName, @ContactName, @ContactTitle, @Address, @City, @Region, @PostalCode, @Country, @Phone, @Fax); SELECT CustomerID, CompanyName, ContactName, ContactTitle, Address, City, Region, PostalCode, Country, Phone, Fax FROM Customers WHERE (CustomerID = @CustomerID)";
            this.sqlInsertCommand1.Connection = this.sqlConnection1;
            this.sqlInsertCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@CustomerID", System.Data.SqlDbType.NVarChar, 5, "CustomerID"));
            this.sqlInsertCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@CompanyName", System.Data.SqlDbType.NVarChar, 40, "CompanyName"));
            this.sqlInsertCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@ContactName", System.Data.SqlDbType.NVarChar, 30, "ContactName"));
            this.sqlInsertCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@ContactTitle", System.Data.SqlDbType.NVarChar, 30, "ContactTitle"));
            this.sqlInsertCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Address", System.Data.SqlDbType.NVarChar, 60, "Address"));
            this.sqlInsertCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@City", System.Data.SqlDbType.NVarChar, 15, "City"));
            this.sqlInsertCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Region", System.Data.SqlDbType.NVarChar, 15, "Region"));
            this.sqlInsertCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@PostalCode", System.Data.SqlDbType.NVarChar, 10, "PostalCode"));
            this.sqlInsertCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Country", System.Data.SqlDbType.NVarChar, 15, "Country"));
            this.sqlInsertCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Phone", System.Data.SqlDbType.NVarChar, 24, "Phone"));
            this.sqlInsertCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Fax", System.Data.SqlDbType.NVarChar, 24, "Fax"));
            // 
            // sqlUpdateCommand1
            // 
            this.sqlUpdateCommand1.CommandText = @"UPDATE Customers SET CustomerID = @CustomerID, CompanyName = @CompanyName, ContactName = @ContactName, ContactTitle = @ContactTitle, Address = @Address, City = @City, Region = @Region, PostalCode = @PostalCode, Country = @Country, Phone = @Phone, Fax = @Fax WHERE (CustomerID = @Original_CustomerID) AND (Address = @Original_Address OR @Original_Address IS NULL AND Address IS NULL) AND (City = @Original_City OR @Original_City IS NULL AND City IS NULL) AND (CompanyName = @Original_CompanyName) AND (ContactName = @Original_ContactName OR @Original_ContactName IS NULL AND ContactName IS NULL) AND (ContactTitle = @Original_ContactTitle OR @Original_ContactTitle IS NULL AND ContactTitle IS NULL) AND (Country = @Original_Country OR @Original_Country IS NULL AND Country IS NULL) AND (Fax = @Original_Fax OR @Original_Fax IS NULL AND Fax IS NULL) AND (Phone = @Original_Phone OR @Original_Phone IS NULL AND Phone IS NULL) AND (PostalCode = @Original_PostalCode OR @Original_PostalCode IS NULL AND PostalCode IS NULL) AND (Region = @Original_Region OR @Original_Region IS NULL AND Region IS NULL); SELECT CustomerID, CompanyName, ContactName, ContactTitle, Address, City, Region, PostalCode, Country, Phone, Fax FROM Customers WHERE (CustomerID = @CustomerID)";
            this.sqlUpdateCommand1.Connection = this.sqlConnection1;
            this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@CustomerID", System.Data.SqlDbType.NVarChar, 5, "CustomerID"));
            this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@CompanyName", System.Data.SqlDbType.NVarChar, 40, "CompanyName"));
            this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@ContactName", System.Data.SqlDbType.NVarChar, 30, "ContactName"));
            this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@ContactTitle", System.Data.SqlDbType.NVarChar, 30, "ContactTitle"));
            this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Address", System.Data.SqlDbType.NVarChar, 60, "Address"));
            this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@City", System.Data.SqlDbType.NVarChar, 15, "City"));
            this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Region", System.Data.SqlDbType.NVarChar, 15, "Region"));
            this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@PostalCode", System.Data.SqlDbType.NVarChar, 10, "PostalCode"));
            this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Country", System.Data.SqlDbType.NVarChar, 15, "Country"));
            this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Phone", System.Data.SqlDbType.NVarChar, 24, "Phone"));
            this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Fax", System.Data.SqlDbType.NVarChar, 24, "Fax"));
            this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Original_CustomerID", System.Data.SqlDbType.NVarChar, 5, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "CustomerID", System.Data.DataRowVersion.Original, null));
            this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Original_Address", System.Data.SqlDbType.NVarChar, 60, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "Address", System.Data.DataRowVersion.Original, null));
            this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Original_City", System.Data.SqlDbType.NVarChar, 15, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "City", System.Data.DataRowVersion.Original, null));
            this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Original_CompanyName", System.Data.SqlDbType.NVarChar, 40, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "CompanyName", System.Data.DataRowVersion.Original, null));
            this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Original_ContactName", System.Data.SqlDbType.NVarChar, 30, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "ContactName", System.Data.DataRowVersion.Original, null));
            this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Original_ContactTitle", System.Data.SqlDbType.NVarChar, 30, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "ContactTitle", System.Data.DataRowVersion.Original, null));
            this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Original_Country", System.Data.SqlDbType.NVarChar, 15, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "Country", System.Data.DataRowVersion.Original, null));
            this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Original_Fax", System.Data.SqlDbType.NVarChar, 24, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "Fax", System.Data.DataRowVersion.Original, null));
            this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Original_Phone", System.Data.SqlDbType.NVarChar, 24, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "Phone", System.Data.DataRowVersion.Original, null));
            this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Original_PostalCode", System.Data.SqlDbType.NVarChar, 10, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "PostalCode", System.Data.DataRowVersion.Original, null));
            this.sqlUpdateCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Original_Region", System.Data.SqlDbType.NVarChar, 15, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "Region", System.Data.DataRowVersion.Original, null));
            // 
            // sqlDeleteCommand1
            // 
            this.sqlDeleteCommand1.CommandText = @"DELETE FROM Customers WHERE (CustomerID = @Original_CustomerID) AND (Address = @Original_Address OR @Original_Address IS NULL AND Address IS NULL) AND (City = @Original_City OR @Original_City IS NULL AND City IS NULL) AND (CompanyName = @Original_CompanyName) AND (ContactName = @Original_ContactName OR @Original_ContactName IS NULL AND ContactName IS NULL) AND (ContactTitle = @Original_ContactTitle OR @Original_ContactTitle IS NULL AND ContactTitle IS NULL) AND (Country = @Original_Country OR @Original_Country IS NULL AND Country IS NULL) AND (Fax = @Original_Fax OR @Original_Fax IS NULL AND Fax IS NULL) AND (Phone = @Original_Phone OR @Original_Phone IS NULL AND Phone IS NULL) AND (PostalCode = @Original_PostalCode OR @Original_PostalCode IS NULL AND PostalCode IS NULL) AND (Region = @Original_Region OR @Original_Region IS NULL AND Region IS NULL)";
            this.sqlDeleteCommand1.Connection = this.sqlConnection1;
            this.sqlDeleteCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Original_CustomerID", System.Data.SqlDbType.NVarChar, 5, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "CustomerID", System.Data.DataRowVersion.Original, null));
            this.sqlDeleteCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Original_Address", System.Data.SqlDbType.NVarChar, 60, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "Address", System.Data.DataRowVersion.Original, null));
            this.sqlDeleteCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Original_City", System.Data.SqlDbType.NVarChar, 15, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "City", System.Data.DataRowVersion.Original, null));
            this.sqlDeleteCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Original_CompanyName", System.Data.SqlDbType.NVarChar, 40, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "CompanyName", System.Data.DataRowVersion.Original, null));
            this.sqlDeleteCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Original_ContactName", System.Data.SqlDbType.NVarChar, 30, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "ContactName", System.Data.DataRowVersion.Original, null));
            this.sqlDeleteCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Original_ContactTitle", System.Data.SqlDbType.NVarChar, 30, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "ContactTitle", System.Data.DataRowVersion.Original, null));
            this.sqlDeleteCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Original_Country", System.Data.SqlDbType.NVarChar, 15, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "Country", System.Data.DataRowVersion.Original, null));
            this.sqlDeleteCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Original_Fax", System.Data.SqlDbType.NVarChar, 24, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "Fax", System.Data.DataRowVersion.Original, null));
            this.sqlDeleteCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Original_Phone", System.Data.SqlDbType.NVarChar, 24, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "Phone", System.Data.DataRowVersion.Original, null));
            this.sqlDeleteCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Original_PostalCode", System.Data.SqlDbType.NVarChar, 10, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "PostalCode", System.Data.DataRowVersion.Original, null));
            this.sqlDeleteCommand1.Parameters.Add(new System.Data.SqlClient.SqlParameter("@Original_Region", System.Data.SqlDbType.NVarChar, 15, System.Data.ParameterDirection.Input, false, ((System.Byte)(0)), ((System.Byte)(0)), "Region", System.Data.DataRowVersion.Original, null));
            // 
            // sqlConnection1
            // 
            this.sqlConnection1.ConnectionString = "data source=QIEYJ;initial catalog=Northwind;persist security info=False;user id=s" +
             "a;workstation id=QIEYJ;packet size=4096";
            // 
            // Form1
            // 
            this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
            this.ClientSize = new System.Drawing.Size(788, 463);
            this.Controls.AddRange(new System.Windows.Forms.Control[] {
                    this.btnFillDataGrid,
                    this.panel1});
            this.Menu = this.mnuFile;
            this.Name = "Form1";
            this.Text = "DataGrid Print Sample";
            this.panel1.ResumeLayout(false);
            ((System.ComponentModel.ISupportInitialize)(this.dgTest)).EndInit();
            this.ResumeLayout(false);

        }
        #endregion

        /// <summary>
        /// The main entry point for the application.
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.Run(new Form1());
        }

        private void btnFillDataGrid_Click(object sender, System.EventArgs e)
        {
            DataTable dt = new DataTable("Customers");
            try
            {
                sqlDataAdapter1.Fill(dt);
                dgTest.DataSource = dt;
            }
            catch (System.Exception ex)
            {
                MessageBox.Show(this, ex.Message);
            }
        }

        private void miPrintPreview_Click(object sender, System.EventArgs e)
        {
            DataGridPrintDocument dpd = new DataGridPrintDocument(dgTest);
            dpd.ColumnHeaderFont = new Font("Arial", 8, FontStyle.Bold);
            dpd.DefaultPageSettings.Landscape = true;

            PrintPreviewDialog PrintPrevDlg = new PrintPreviewDialog();
            PrintPrevDlg.Document = dpd;
            PrintPrevDlg.ShowDialog(this);
        }

        private void miPrint_Click(object sender, System.EventArgs e)
        {

            DataGridPrintDocument dpd = new DataGridPrintDocument(dgTest);
            dpd.DefaultPageSettings.Landscape = true;

            PrintDialog PrintDlg = new PrintDialog();
            PrintDlg.Document = dpd;

            DialogResult dlgresult = PrintDlg.ShowDialog(this);
            if (dlgresult == DialogResult.OK)
                dpd.Print();

        }

        private void miExit_Click(object sender, System.EventArgs e)
        {
            Application.Exit();
        }
    }
}

作者Blog:http://blog.csdn.net/qieyj/

相关文章

HTML中树的实现方法
灵活定义和处理SOAP头消息
在ASP.NET中创建安全的web站点
在.NET中操作XmlDocument
如何把ini文件转换为xml



CSDN 网友 ( 2004-08-06)

这么不负责任的帖子,测试通不过就不要乱帖,真是垃圾。

CSDN 网友 ( 2004-08-05)

上面的程序都是在windows窗体下的DataGrid打印功能,哪为大哥知道在WEB应用程序下如何实现同样的功能,不胜感激?

CSDN 网友 ( 2004-06-15)

我靠,从哪里抄袭的,恐怕你自己都不明白!!!!!装大象!

CSDN 网友 ( 2004-06-15)

我靠,从哪里抄袭的,恐怕你自己都不明白!!!!!装大象!

YangZhiXin2003 ( 2004-03-30)

我给大家一个通用的打印类:

using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.Drawing.Printing;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Data;

namespace YZX
{
    public class PrintDataGrid
    {
        private Font PrintFont = new Font("宋体", 10);
        private int PrintLines = 50;
        private int PrintRecordNumber = 45;
        //---------
        private DataGrid DataGridSource;
        //private PrintPageEventArgs ev;
        private PrintDocument PrintDataGridDocument;
        private PrintPreviewDialog PrintPriview;
        private PageSetupDialog PageSetup;
        //private double PrintScale=1;
        //------------
        //private DataColumn DataGridColumn;
        private DataRow DataGridRow;
        private DataTable DataGridTable = null;
        //------------
        private int Cols;
        //private int Rows=1;
        private int ColsCount;
        //private int PrintingLineNumber=0;
        private int PageRecordNumber;
        //----------------
        private int X_unit;
        private int Y_unit;
        private int PrintingPageNumber = 0;
        private int PageNumber;
        private int PrintRecordLeave;
        private int PrintRecordComplete = 0;

        public PrintDataGrid()
        {
        }

        public PrintDataGrid(DataGrid TableSource, DataTable Dt)
        {
            DataGridSource = TableSource;
            DataGridTable = new DataTable();
            DataGridTable = Dt;
            ColsCount = DataGridTable.Columns.Count;
        }

        public Font SetPrintFont
        {
            set
            {
                PrintFont = value;
            }
        }

        public int SetPrintRecordNumber
        {
            set
            {
                PrintRecordNumber = value;
            }
        }

        public void Print()
        {
            try
            {
                PrintDataGridDocument = new PrintDocument();
                PrintDataGridDocument.PrintPage += new PrintPageEventHandler(this.PrintDataGrid_PrintPage);
                PageSetup = new PageSetupDialog();
                PageSetup.PageSettings = PrintDataGridDocument.DefaultPageSettings;
                if (PageSetup.ShowDialog() == DialogResult.Cancel)
                {
                    return;
                }
                if (!PrintDataGridDocument.DefaultPageSettings.Landscape)
                {
                    PrintLines = PrintDataGridDocument.DefaultPageSettings.PaperSize.Height / (PrintFont.Height + 5);
                }
                else
                {
                    PrintLines = PrintDataGridDocument.DefaultPageSettings.PaperSize.Width / (PrintFont.Height + 5);
                }
                PrintPriview = new PrintPreviewDialog();
                PrintPriview.Document = PrintDataGridDocument;
                PrintPriview.ShowDialog();
            }
            catch (Exception Ex)
            {
                MessageBox.Show("Error:" + Ex.ToString());
            }
            finally
            {
            }
        }

        private void PrintDataGrid_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs ev)
        {
            string strPrint;
            SolidBrush DrawBrush = new SolidBrush(Color.Blue);
            int X = 0, Y = 0;
            PointF DrawPoint = new PointF(X, Y);
            //int row_count;
            PrintRecordLeave = DataGridTable.Rows.Count - PrintRecordComplete;
            PageNumber = PrintRecordLeave / PrintRecordNumber;
            PrintingPageNumber = 0;
            if (PrintDataGridDocument.DefaultPageSettings.Landscape)
            {
                X_unit = PrintDataGridDocument.DefaultPageSettings.PaperSize.Height / (DataGridTable.Columns.Count + 2);
                Y_unit = PrintDataGridDocument.DefaultPageSettings.PaperSize.Width / PrintLines;
            }
            else
            {
                X_unit = PrintDataGridDocument.DefaultPageSettings.PaperSize.Width / (DataGridTable.Columns.Count + 2);
                Y_unit = PrintDataGridDocument.DefaultPageSettings.PaperSize.Height / PrintLines;
            }
            if (DataGridTable.Rows.Count - PrintingPageNumber * PrintRecordNumber >= PrintRecordNumber)
            {
                PageRecordNumber = PrintRecordNumber;
            }
            else
            {
                PageRecordNumber = (DataGridTable.Rows.Count - PrintingPageNumber * PrintRecordNumber) - ((DataGridTable.Rows.Count - PrintingPageNumber * PrintRecordNumber) *
                (DataGridTable.Rows.Count - PrintingPageNumber * PrintRecordNumber) / PrintRecordNumber);
            }
            while (PrintingPageNumber <= PageNumber)
            {
                strPrint = DataGridSource.CaptionText;
                DrawPoint = new PointF(X_unit, Y_unit);
                ev.Graphics.DrawString(strPrint, PrintFont, DrawBrush, DrawPoint);
                string[] ColumnText = new string[DataGridTable.Columns.Count];
                //int Table;
                for (Cols = 0; Cols {
                    ColumnText[Cols] = DataGridTable.Columns[Cols].ToString();
                    DrawPoint = new PointF(X_unit * (Cols + 1), Y_unit * 2);
                    ev.Graphics.DrawString(ColumnText[Cols], PrintFont, DrawBrush, DrawPoint);
                }
                DrawPoint = new PointF(X_unit, Y_unit * 2);
                DrawLine(DrawPoint, ev);
                int PrintingLine = 0;
                string strUpData = null;
                //string strNonce=null;
                while (PrintingLine {
                    DataGridRow = DataGridTable.Rows[PrintRecordComplete];
                    for (Cols = 0; Cols {
                        DrawPoint.X = X_unit * (Cols + 1);
                        DrawPoint.Y = Y_unit * (PrintingLine + 1 + 2);
                        if (Cols == 0)
                        {
                            if (strUpData != "")
                            {
                                if (strUpData == DataGridRow[ColumnText[0]].ToString())
                                {
                                    ev.HasMorePages = true;
                                }
                            }
                        }
                        ev.Graphics.DrawString(DataGridRow[ColumnText[Cols]].ToString(), PrintFont, DrawBrush, DrawPoint);
                        strUpData = DataGridRow[ColumnText[0]].ToString();
                    }
                    DrawPoint.X = X_unit * 1;
                    DrawPoint.Y = Y_unit * (PrintingLine + 1 + 2);
                    DrawLine(DrawPoint, ev);
                    PrintingLine += 1;
                    PrintRecordComplete += 1;
                    if (PrintRecordComplete >= DataGridTable.Rows.Count)
                    {
                        ev.HasMorePages = false;
                        return;
                    }
                }
                PrintingPageNumber += 1;
                if (PrintingPageNumber > PageNumber)
                {
                    ev.HasMorePages = false;
                }
                else
                {
                    ev.HasMorePages = true;
                    return;
                }
            }
        }
        private void DrawLine(PointF point, System.Drawing.Printing.PrintPageEventArgs ev)
        {
            Pen blackPen = new Pen(System.Drawing.Color.Black, 1);
            ev.Graphics.DrawLine(blackPen, point.X, point.Y + PrintFont.Height, point.X * (ColsCount + 1), point.Y + PrintFont.Height);
        }
    }
}
Contributors: FHL