Hi!
I need your help please.
I would like to print my datagrid's contentsbut I receive theses errors (I cant sleep well).
//////////////////////////////////////////////////////////////////
Error 1 The name 'strFormat' does not exist in the current context
Error 2 The name 'strFormat' does not exist in the current context
Error 3 The name 'strFormat' does not exist in the current context
Error 4 The name 'strFormat' does not exist in the current context
Error 5 The name 'arrColumnLefts' does not exist in the current context
Error 6 The name 'arrColumnWidths' does not exist in the current context
Error 7 The name 'iCellHeight' does not exist in the current context
Error 8 The name 'iCount' does not exist in the current context
Error 9 The name 'bFirstPage' does not exist in the current context
Error 10 The name 'bNewPage' does not exist in the current context
Error 11 The name 'iTotalWidth' does not exist in the current context
Error 12 The name 'iTotalWidth' does not exist in the current context
Error 13 The name 'bFirstPage' does not exist in the current context
Error 14 The name 'iTotalWidth' does not exist in the current context
Error 15 The name 'iTotalWidth' does not exist in the current context
Error 16 The name 'iTotalWidth' does not exist in the current context
Error 17 The name 'iHeaderHeight' does not exist in the current context
Error 18 The name 'arrColumnLefts' does not exist in the current context
Error 19 The name 'arrColumnWidths' does not exist in the current context
Error 20 The name 'iRow' does not exist in the current context
Error 21 The name 'iRow' does not exist in the current context
Error 22 The name 'iCellHeight' does not exist in the current context
Error 23 The name 'iCellHeight' does not exist in the current context
Error 24 The name 'bNewPage' does not exist in the current context
Error 25 The name 'bFirstPage' does not exist in the current context
Error 26 The name 'bNewPage' does not exist in the current context
Error 27 The name 'arrColumnLefts' does not exist in the current context
Error 28 The name 'arrColumnWidths' does not exist in the current context
Error 29 The name 'iHeaderHeight' does not exist in the current context
Error 30 The name 'arrColumnLefts' does not exist in the current context
Error 31 The name 'arrColumnWidths' does not exist in the current context
Error 32 The name 'iHeaderHeight' does not exist in the current context
Error 33 The name 'arrColumnLefts' does not exist in the current context
Error 34 The name 'arrColumnWidths' does not exist in the current context
Error 35 The name 'iHeaderHeight' does not exist in the current context
Error 36 The name 'strFormat' does not exist in the current context
Error 37 The name 'bNewPage' does not exist in the current context
Error 38 The name 'iHeaderHeight' does not exist in the current context
Error 39 The name 'arrColumnLefts' does not exist in the current context
Error 40 The name 'arrColumnWidths' does not exist in the current context
Error 41 The name 'iCellHeight' does not exist in the current context
Error 42 The name 'strFormat' does not exist in the current context
Error 43 The name 'arrColumnLefts' does not exist in the current context
Error 44 The name 'arrColumnWidths' does not exist in the current context
Error 45 The name 'iCellHeight' does not exist in the current context
Error 46 The name 'iRow' does not exist in the current context
Error 47 The name 'iCellHeight' does not exist in the current context
/////////////////////////////////////////////////////////////////
Let's see my code:
private void Form1_Load(object sender, EventArgs e)
{
string connectionString = @"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Users\ROBERTO\Documents\Israel\Windows_Application_Samples\DataGridPrint_Great_Great\WindowsFormsApplication1\App_Data\test.mdb;Persist Security Info=False";
string sql = "SELECT * FROM customers";
OleDbConnection connection = new OleDbConnection(connectionString);
OleDbDataAdapter dataadapter = new OleDbDataAdapter(sql, connection);
DataSet ds = new DataSet();
connection.Open();
dataadapter.Fill(ds, "customers");
connection.Close();
dataGridView1.DataSource = ds;
dataGridView1.DataMember = "customers";
dataGridView1.CurrentCell = dataGridView1.Rows[dataGridView1.Rows.Count - 1].Cells[0];
this.dataGridView1.RowsDefaultCellStyle.BackColor = Color.AliceBlue;
this.dataGridView1.AlternatingRowsDefaultCellStyle.BackColor = Color.Beige;
}
private void btnPrint_Click(object sender, EventArgs e)
{
//Open the print dialog
PrintDialog printDialog = new PrintDialog();
printDialog.Document = printDocument1;
printDialog.UseEXDialog = true;
//Get the document
if (DialogResult.OK == printDialog.ShowDialog())
{
printDocument1.DocumentName = "Test Page Print";
printDocument1.Print();
}
}
private void printDocument1_BeginPrint(object sender, System.Drawing.Printing.PrintEventArgs e)
{
try
{
strFormat = new StringFormat();
strFormat.Alignment = StringAlignment.Near;
strFormat.LineAlignment = StringAlignment.Center;
strFormat.Trimming = StringTrimming.EllipsisCharacter;
arrColumnLefts.Clear();
arrColumnWidths.Clear();
iCellHeight = 0;
iCount = 0;
bFirstPage = true;
bNewPage = true;
// Calculating Total Widths
iTotalWidth = 0;
foreach (DataGridViewColumn dgvGridCol in dataGridView1.Columns)
{
iTotalWidth += dgvGridCol.Width;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
private void printDocument1_PrintPage(object sender, System.Drawing.Printing.PrintPageEventArgs e)
{
try
{
//Set the left margin
int iLeftMargin = e.MarginBounds.Left;
//Set the top margin
int iTopMargin = e.MarginBounds.Top;
//Whether more pages have to print or not
bool bMorePagesToPrint = false;
int iTmpWidth = 0;
//For the first page to print set the cell width and header height
if (bFirstPage)
{
foreach (DataGridViewColumn GridCol in dataGridView1.Columns)
{
iTmpWidth = (int)(Math.Floor((double)((double)GridCol.Width /
(double)iTotalWidth * (double)iTotalWidth *
((double)e.MarginBounds.Width / (double)iTotalWidth))));
iHeaderHeight = (int)(e.Graphics.MeasureString(GridCol.HeaderText,
GridCol.InheritedStyle.Font, iTmpWidth).Height) + 11;
// Save width and height of headers
arrColumnLefts.Add(iLeftMargin);
arrColumnWidths.Add(iTmpWidth);
iLeftMargin += iTmpWidth;
}
}
//Loop till all the grid rows not get printed
while (iRow <= dataGridView1.Rows.Count - 1)
{
DataGridViewRow GridRow = dataGridView1.Rows[iRow];
//Set the cell height
iCellHeight = GridRow.Height + 5;
int iCount = 0;
//Check whether the current page settings allows more rows to print
if (iTopMargin + iCellHeight >= e.MarginBounds.Height + e.MarginBounds.Top)
{
bNewPage = true;
bFirstPage = false;
bMorePagesToPrint = true;
break;
}
else
{
if (bNewPage)
{
//Draw Header
e.Graphics.DrawString("Customer Summary",
new Font(dataGridView1.Font, FontStyle.Bold),
Brushes.Black, e.MarginBounds.Left,
e.MarginBounds.Top - e.Graphics.MeasureString("Customer Summary",
new Font(dataGridView1.Font, FontStyle.Bold),
e.MarginBounds.Width).Height - 13);
String strDate = DateTime.Now.ToLongDateString() + " " +
DateTime.Now.ToShortTimeString();
//Draw Date
e.Graphics.DrawString(strDate,
new Font(dataGridView1.Font, FontStyle.Bold), Brushes.Black,
e.MarginBounds.Left +
(e.MarginBounds.Width - e.Graphics.MeasureString(strDate,
new Font(dataGridView1.Font, FontStyle.Bold),
e.MarginBounds.Width).Width),
e.MarginBounds.Top - e.Graphics.MeasureString("Customer Summary",
new Font(new Font(dataGridView1.Font, FontStyle.Bold),
FontStyle.Bold), e.MarginBounds.Width).Height - 13);
//Draw Columns
iTopMargin = e.MarginBounds.Top;
foreach (DataGridViewColumn GridCol in dataGridView1.Columns)
{
e.Graphics.FillRectangle(new SolidBrush(Color.LightGray),
new Rectangle((int)arrColumnLefts[iCount], iTopMargin,
(int)arrColumnWidths[iCount], iHeaderHeight));
e.Graphics.DrawRectangle(Pens.Black,
new Rectangle((int)arrColumnLefts[iCount], iTopMargin,
(int)arrColumnWidths[iCount], iHeaderHeight));
e.Graphics.DrawString(GridCol.HeaderText,
GridCol.InheritedStyle.Font,
new SolidBrush(GridCol.InheritedStyle.ForeColor),
new RectangleF((int)arrColumnLefts[iCount], iTopMargin,
(int)arrColumnWidths[iCount], iHeaderHeight), strFormat);
iCount++;
}
bNewPage = false;
iTopMargin += iHeaderHeight;
}
iCount = 0;
//Draw Columns Contents
foreach (DataGridViewCell Cel in GridRow.Cells)
{
if (Cel.Value != null)
{
e.Graphics.DrawString(Cel.Value.ToString(),
Cel.InheritedStyle.Font,
new SolidBrush(Cel.InheritedStyle.ForeColor),
new RectangleF((int)arrColumnLefts[iCount],
(float)iTopMargin,
(int)arrColumnWidths[iCount], (float)iCellHeight),
strFormat);
}
//Drawing Cells Borders
e.Graphics.DrawRectangle(Pens.Black,
new Rectangle((int)arrColumnLefts[iCount], iTopMargin,
(int)arrColumnWidths[iCount], iCellHeight));
iCount++;
}
}
iRow++;
iTopMargin += iCellHeight;
}
//If more lines exist, print another page.
if (bMorePagesToPrint)
e.HasMorePages = true;
else
e.HasMorePages = false;
}
catch (Exception exc)
{
MessageBox.Show(exc.Message, "Error", MessageBoxButtons.OK,
MessageBoxIcon.Error);
}
}
}