public void CallPrintForm(DataGridView dgv, string title, string sum) { try { if (dgv != null && dgv.DataSource != null && dgv.Rows.Count > 0) { if (mapping == null) mapping = new Collection<FieldMappingColumn>(); if (mapping.Count > 0) mapping.Clear(); int sumlen = 0; if (dgv.ColumnCount > 0) { foreach (DataGridViewColumn col in dgv.Columns) { if (col.Index == 0 && col.GetType().ToString() == "System.Windows.Forms.DataGridViewCheckBoxColumn") { continue; } if (col.GetType().ToString() != "System.Windows.Forms.DataGridViewLinkColumn") { if (col.Visible == true) { sumlen += col.Width; } } } } double unit = Convert.ToDouble(19) / Convert.ToDouble(sumlen); if (dgv.ColumnCount > 0) { foreach (DataGridViewColumn col in dgv.Columns) { if (col.Index == 0 && col.GetType().ToString() == "System.Windows.Forms.DataGridViewCheckBoxColumn") { continue; } if (col.GetType().ToString() != "System.Windows.Forms.DataGridViewLinkColumn") { if (col.Visible == true) { FieldMappingColumn field = new FieldMappingColumn(); field.ColumnName = col.HeaderText; field.Filed = col.DataPropertyName; field.ColumnWidth = Convert.ToDouble((unit * col.Width)).ToString("0.0"); mapping.Add(field); } } } } int count = mapping.Count; //***********Czlt-2011-04-27 测代码**************** string[] str = sum.Split(';'); string strHead =""; string strFooters="" ; if (str.Length == 2) { strHead = str[0].ToString(); strFooters = str[1].ToString(); } else { strHead = str[0].ToString(); } if (strFooters.Trim().Equals("")) { strFooters = "代班领导,安全科长,制表人,代班领导,安全科长,制表人"; } //************************************************ DataTable dtResult = null; if (dgv.DataSource != null) { if (dgv.DataSource.GetType().ToString() == "System.Data.DataView") { dtResult = ProcessDataTable(((DataView)dgv.DataSource).Table); } else { dtResult = ProcessDataTable((DataTable)dgv.DataSource); } // object[] para = new object[] { "MyDataSet", title, sum }; object[] para = new object[] { "MyDataSet", title, strHead, strFooters }; //if (dtResult != null && dtResult.Rows.Count > 0) //{ //调用 CallPrintForm(dtResult, mapping, para); //} //else //{ // MessageBox.Show("无数据信息,不能打印!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); //} } } else { MessageBox.Show("没有数据生成,请重新查询", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } catch (Exception e) { MessageBox.Show("发生错误,错误信息:[" + e.Message + "]", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } }
public void CallPrintForm(DataGridView dgv, string title, string sum) { try { if (sum == "AutoPrint") { this.autoPrint = true; } if (Model == null) { MessageBox.Show("打印模板错误,请重新设置打印参数", "提示"); return; } if (dgv != null && dgv.DataSource !=null && dgv.Rows.Count > 0) { if (mapping == null) mapping = new Collection<FieldMappingColumn>(); if (mapping.Count > 0) mapping.Clear(); int sumlen = 0; //页宽 总页宽-左右边宽 double pagewidth = Convert.ToDouble(Model.Paperwidth) - Convert.ToDouble(Model.Paperleft) - Convert.ToDouble(Model.Paperright) ;// -1; List<string> columnswidths = Model.Columnswidth;//列宽集合 List<string> columnsname = Model.Columns;//列名集合 //正常打印 if (Model.Columnswidth.Count != 0 && Model.Printtable.TableName != "A_InitialData") { if (dgv.ColumnCount > 0) { //获取总宽度 foreach (string width in columnswidths) { sumlen += Convert.ToInt32(width); } } //获取单元宽度 double unit = pagewidth / Convert.ToDouble(sumlen); if (dgv.ColumnCount > 0) { for (int i = 0; i < columnsname.Count; i++) { //循环注入模板中 FieldMappingColumn field = new FieldMappingColumn(); field.ColumnName = dgv.Columns[columnsname[i]].HeaderText.ToString(); field.Filed = dgv.Columns[columnsname[i]].DataPropertyName; field.ColumnWidth = Convert.ToDouble((unit * Convert.ToDouble(columnswidths[i]))).ToString("0.00"); mapping.Add(field); } } } else//无模板直接打印 { if (dgv.ColumnCount > 0) { if (columnswidths.Count != Model.Printtable.Columns.Count)//判断如果勾选的列数和实际列数是否相等 { columnswidths = new List<string>(); columnsname = new List<string>(); for (int i = 0; i < Model.Printtable.Columns.Count; i++) { columnswidths.Add("1"); columnsname.Add(Model.Printtable.Columns[i].ColumnName); } } //获取总宽度 foreach (string width in columnswidths) { sumlen += Convert.ToInt32(width); } //获取单元宽度 double unit = pagewidth / Convert.ToDouble(sumlen); for (int i = 0; i < Model.Printtable.Columns.Count; i++) { //循环注入模板中 FieldMappingColumn field = new FieldMappingColumn(); field.ColumnName = dgv.Columns[Model.Printtable.Columns[i].ColumnName].HeaderText.ToString(); field.Filed = dgv.Columns[Model.Printtable.Columns[i].ColumnName].DataPropertyName; field.ColumnWidth = Convert.ToDouble((unit * Convert.ToDouble(columnswidths[i]))).ToString("0.00"); mapping.Add(field); } } } //19 DataTable dtResult = null; if (dgv.DataSource != null) { if (dgv.DataSource.GetType().ToString() == "System.Data.DataView") { dtResult = ProcessDataTable(((DataView)dgv.DataSource).Table); } else { dtResult = ProcessDataTable((DataTable)dgv.DataSource); } object[] para = new object[] { "MyDataSet", title, sum }; //if (dtResult != null && dtResult.Rows.Count > 0) //{ //调用 CallPrintForm(dtResult, mapping, para); //} //else //{ // MessageBox.Show("无数据信息,不能打印!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); //} } } else { MessageBox.Show("没有数据生成,请重新查询", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } } catch (Exception e) { MessageBox.Show("发生错误,错误信息:[" + e.Message + "]", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } }