最近完成一个批量打印,只为以后做参考。如有更好的希望大家告知,谢谢!!
前台代码
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="frmPm_PayInfoPrint.aspx.cs"
Inherits="PM.frmPm_PayInfoPrint" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<style type="text/css" media="print">
.noprint
{
display: none;
background: #000000;
}
</style>
<script language="javascript" type="text/javascript"></script>
</head>
<body>
<object id="WebBrowser" classid="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2" height="0"
width="0">
</object>
<div class="noprint">
<input οnclick="document.all.WebBrowser.ExecWB(6,1)" type="button" value="打印">
<input οnclick="document.all.WebBrowser.ExecWB(6,6)" type="button" value="直接打印">
<input οnclick="document.all.WebBrowser.ExecWB(8,1)" type="button" value="页面设置">
<input οnclick="document.all.WebBrowser.ExecWB(7,1)" type="button" value="打印预览">
<input type="button" name="Button" value="关闭窗口" οnclick="document.all.WebBrowser.ExecWB(45,1)">
</div>
<form id="form1" runat="server">
</form>
</body>
</html>
后台动态生成......
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Collections;
using System.Data;
using System.Web.UI.HtmlControls;
using System.Drawing;
public partial class frmPm_PayInfoPrint : PMBasePage
{
private string a= "";
private string b= "";
private string c= "";
private string d= "";
private string e= "";
private decimal sum = 0;
private string keyID = "";
protected void Page_Load(object sender, EventArgs e)
{
//一个参数
if (Request["keyID"].ToString() != string.Empty)
{
keyID = Request["keyID"].ToString();
Bind(keyID);
}
else
{
if (Request["a"].ToString() != string.Empty)
a= Request["a"].ToString();
if (Request["b"].ToString() != string.Empty )
b= Request["b"].ToString();
if (Request["c"].ToString() != string.Empty)
c= Request["c"].ToString();
if (Request["d"].ToString() != string.Empty )
d= Request["d"].ToString();
if (Request["e"].ToString() != string.Empty )
e= Request["e"].ToString();
Bind(a, b, c, d, e);
}
}
绑定单条记录
protected void Bind(string keyID)
{
DataTable dt = new DataTable();
Panel div = new Panel();
div.Style.Add("width", "650px");
div.Style.Add("page-break-after", "always");
#region 头部分
HtmlTable dthead = new HtmlTable();
dthead.Width = "650px";
dthead.Height = "100px";
for (int j = 1; j < 4; j++)
{
HtmlTableRow tr = new HtmlTableRow();
HtmlTableCell td = new HtmlTableCell();
HtmlImage img = new HtmlImage();
switch (j)
{
case 1:
img.Src = "../Image/logo.gif";
td.Align = "left";
td.Controls.Add(img);
break;
case 2:
td.InnerHtml = "<b>主标题</b>";
td.Style.Add("font-size", "20px");
td.Align = "center";
break;
case 3:
td.InnerHtml = "<b>副标题</b>";
td.Style.Add("font-size", "20px");
td.Align = "center";
break;
}
td.Style.Add("width", "100%");
tr.Controls.Add(td);
dthead.Controls.Add(tr);
}
HtmlTable dthead1 = new HtmlTable();
dthead1.Width = "650px";
dthead1.Height = "150px";
string strSql = sql语句
//这里就是绑定dt sqlconnection ,sqlcommand......
dt = GetDataTable(strSql);
if (dt == null)
return;
if (dt.Rows.Count > 0)
{
for (int k = 1; k < 6; k++)
{
HtmlTableRow tr = new HtmlTableRow();
HtmlTableCell td = new HtmlTableCell();
Label lab = new Label();
lab.Text = "";
decimal totalarea = 0;
switch (k)
{
case 1:
td.InnerText = "日期:";
lab.Text = DateTime.Now.ToString("yyyy-MM-dd");
break;
case 2:
td.InnerText = "客户:";
lab.Text += dt.Rows[0][0].ToString() + " ";
break;
case 3:
td.InnerText = "单元:";
for (int p = 0; p < dt.Rows.Count; p++)
{
lab.Text += dt.Rows[p][2].ToString() + " " + dt.Rows[p][4].ToString();
//lab.Text += dt.Rows[p][2].ToString() + " " + dt.Rows[p][3].ToString() + " " + dt.Rows[p][4].ToString() + " " + dt.Rows[p][5].ToString() + " " + dt.Rows[p][6].ToString() + " ";
}
break;
case 4:
td.InnerHtml = "建筑:";
for (int p = 0; p < dt.Rows.Count; p++)
{
if (dt.Rows[p][1].ToString() != string.Empty)
totalarea += decimal.Parse(dt.Rows[p][1].ToString());
}
lab.Text += totalarea.ToString() + " M2";
break;
case 5:
td.InnerText = "下述款项:";
lab.Text = "";
break;
}
lab.ForeColor = Color.Blue;
td.Controls.Add(lab);
tr.Controls.Add(td);
dthead1.Controls.Add(tr);
}
}
#endregion
#region 中间
HtmlTable dtcenter = new HtmlTable();
HtmlTableRow trenter = new HtmlTableRow();
HtmlTableCell tdenter = new HtmlTableCell();
dtcenter.Width = "650px";
dtcenter.Height = "200px";
string strSql = sql语句
//这里就是绑定dt sqlconnection ,sqlcommand......
dt = GetDataTable(strSql);
if (dt == null)
return;
if (dt.Rows.Count > 0)
{
GridView gv = new GridView();
gv.Style.Add("width", "650px");
gv.Style.Add("height", "250px");
gv.HeaderStyle.ForeColor = Color.Black;
gv.ForeColor = Color.Blue;
gv.ShowFooter = true;
gv.DataSource = dt;
gv.RowDataBound += new GridViewRowEventHandler(gv_RowDataBound);
gv.DataBind();
tdenter.Align = "center";
tdenter.Controls.Add(gv);
trenter.Controls.Add(tdenter);
dtcenter.Controls.Add(trenter);
}
HtmlTable dtcenterend = new HtmlTable();
dtcenterend.Width = "650px";
dtcenterend.Height = "280px";
string strSql = sql语句
//这里就是绑定dt sqlconnection ,sqlcommand......
dt = GetDataTable(strSql);
dt = this.Sqlca.GetDataTable(strSql);
if (dt == null)
return;
if (dt.Rows.Count <= 0)
{
this.MsgBox("没有数据!");
return;
}
for (int m = 1; m < 11; m++)
{
HtmlTableRow trcenterend = new HtmlTableRow();
HtmlTableCell tdcenterend = new HtmlTableCell();
switch (m)
{
case 1:
tdcenterend.InnerText = "款项";
break;
case 2:
tdcenterend.InnerText = "转账";
break;
case 3:
tdcenterend.InnerText = "";
break;
case 4:
tdcenterend.InnerText = "付款:";
break;
case 5:
tdcenterend.InnerText = "";
break;
case 6:
tdcenterend.InnerText = "1.支票";
break;
case 7:
tdcenterend.InnerText = "2.转账";
break;
case 8:
tdcenterend.InnerHtml = " 收款人--" + dt.Rows[0][0].ToString();
tdcenterend.Style.Add("color", "blue");
break;
case 9:
tdcenterend.InnerHtml = " 账 号--" + dt.Rows[0][1].ToString();
tdcenterend.Style.Add("color", "blue");
break;
case 10:
tdcenterend.InnerHtml = " 开户行--" + dt.Rows[0][2].ToString();
tdcenterend.Style.Add("color", "blue");
break;
}
tdcenterend.Align = "left";
tdcenterend.Style.Add("width", "100%");
trcenterend.Controls.Add(tdcenterend);
dtcenterend.Controls.Add(trcenterend);
}
#endregion
#region 底部
HtmlTable dtend = new HtmlTable();
dtend.Width = "650px";
dtend.Height = "200px";
for (int n = 1; n < 5; n++)
{
HtmlTableRow trend = new HtmlTableRow();
HtmlTableCell tdend = new HtmlTableCell();
switch (n)
{
case 1:
tdend.InnerHtml = "备注";
break;
case 2:
tdend.InnerText = "";
break;
case 3:
tdend.InnerHtml = "签收";
tdend.Align = "left";
break;
case 4:
tdend.InnerText = "公司";
tdend.Style.Add("color", "blue");
tdend.Align = "right";
break;
}
trend.Controls.Add(tdend);
dtend.Controls.Add(trend);
}
#endregion
div.Controls.Add(dthead);
div.Controls.Add(dthead1);
div.Controls.Add(dtcenter);
div.Controls.Add(dtcenterend);
div.Controls.Add(dtend);
form1.Controls.Add(div);
}
//多条根据参数
protected void Bind(string a, string b, string c, string d, string e)
{
string strSql = sql语句
//拼接sql
if (a!= string.Empty)
strSql += " and >='" + a+ "'";
//这里就是绑定dt sqlconnection ,sqlcommand......
DataTable dt = new DataTable(); if (dtAll == null) return; for (int i = 0; i < dtAll.Rows.Count; i++) { 一个是类似的 } } protected void gv_RowDataBound(object sender, GridViewRowEventArgs e) { if (e.Row.RowIndex == -1 && e.Row.RowType != DataControlRowType.Footer) sum = 0; if (e.Row.RowIndex >= 0) { sum += decimal.Parse(e.Row.Cells[3].Text); } else if (e.Row.RowIndex == -1 && e.Row.RowType == DataControlRowType.Footer) { e.Row.Cells[0].Text = "合计:"; e.Row.Cells[3].Text = sum.ToString("N2"); } } }DataTable dtAll = GetDataTable(strSql);
大致实现情况......