2
Reply

Prolem in DataGridView using c#

Naeem Khan

Naeem Khan

Nov 11 2009 2:39 PM
6.2k
Hello friends, well i have big Problem in Printing . well i have datgridview which is bind from database . in database only have date not time but when i printing my DatagridView this is showing me Date with time and i want only date not time so i dont know where is my mistak please check it and let me know.... using System; using System.Collections; using System.ComponentModel; using System.Data; using System.Data.SqlClient; using System.Text; using System.Windows.Forms; using System.Drawing; namespace DataGridViewTestApplication { public partial class Form1 : Form { #region Member Variables const string strConnectionString = "data source=KHAN;user id=sa;password=.;Initial Catalog=apollohospital;"; StringFormat strFormat; //Used to format the grid rows. ArrayList arrColumnLefts = new ArrayList();//Used to save left coordinates of columns ArrayList arrColumnWidths = new ArrayList();//Used to save column widths int iCellHeight = 0; //Used to get/set the datagridview cell height int iTotalWidth = 0; // int iRow = 0;//Used as counter bool bFirstPage = false; //Used to check whether we are printing first page bool bNewPage = false;// Used to check whether we are printing a new page int iHeaderHeight = 0; //Used for the header height #endregion public Form1() { InitializeComponent(); } #region Get Customer Details Button Click Event /// /// Handles the customer details button click /// /// /// private void btnCustomerDetails_Click(object sender, EventArgs e) { Cursor.Current = Cursors.WaitCursor; SqlConnection sqlConnection = null; SqlCommand sqlCommand = null; SqlDataReader sqlReader = null; try { string strQuery = "select * from dbo.charity"; sqlConnection = new SqlConnection(strConnectionString); sqlConnection.Open(); sqlCommand = new SqlCommand(strQuery, sqlConnection); SqlDataAdapter da = new SqlDataAdapter(); da.SelectCommand = sqlCommand; DataSet ds = new DataSet(); da.Fill(ds); dataGridView1.DataSource = ds.Tables[0]; //sqlReader = sqlCommand.ExecuteReader(); /*while (sqlReader.Read()) { object[] row = { sqlReader[0], sqlReader[1], sqlReader[2], sqlReader[3] }; dataGridView1.Rows.Add(row); }*/ } catch (Exception exc) { MessageBox.Show(exc.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } finally { Cursor.Current = Cursors.Default; sqlConnection.Close(); if (sqlReader != null) { sqlReader.Dispose(); sqlReader = null; } if (sqlCommand != null) { sqlCommand.Dispose(); sqlCommand = null; } } } #endregion #region Print Button Click Event /// /// Handles the print button click event /// /// /// 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(); } //Open the print preview dialog //PrintPreviewDialog objPPdialog = new PrintPreviewDialog(); //objPPdialog.Document = printDocument1; //objPPdialog.ShowDialog(); } #endregion #region Begin Print Event Handler /// /// Handles the begin print event of print document /// /// /// 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; iRow = 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); } } #endregion #region Print Page Event /// /// Handles the print page event of print document /// /// /// 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 headres 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 allo 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); } } #endregion private void btnPrintpreview_Click(object sender, EventArgs e) { PrintPreviewDialog printpDialog = new PrintPreviewDialog(); printpDialog.Document = printDocument1; printpDialog.ShowDialog(); } } } thanks in Advance

Answers (2)