一个票据打印实例
效果图:
技术实现:
前台:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="RuKD.aspx.cs" Inherits="HuoDGL_DaY_RuKD" %>
<!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>
@media print{
.noprint{
display:none
}
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:GridView ID="DaYGridView" runat="server" AutoGenerateColumns="False"
onrowdatabound="DaYGridView_RowDataBound" BorderWidth="0" PageSize="1" BorderStyle="None" RowStyle-BorderStyle="None" ShowHeader="False" GridLines="None" Width="100%">
<Columns>
<asp:TemplateField>
<ItemTemplate>
<table>
<tr>
<td></td>
</tr>
</table>
<table align="center" width="100%" cellpadding="0" cellspacing="0" border="0">
<tr align="center">
<td>
<asp:Image ID="Image1" runat="server" ImageUrl="~/images/1.gif" Height="60px" Width="100px" />
</td>
<td colspan="2" align="center"><asp:Label ID="TitleLabel" runat="server"
Font-Size="18px" Text="中国外运江苏集团公司南通公司郭里头仓库" Font-Bold="True"/>
<br/><center><asp:Label ID="Label1" runat="server" Font-Size="18px" Text="商品入库单"
Font-Bold="True"/></center>
</td>
<td></td>
</tr>
<tr>
<td width="25%">货主名称<asp:TextBox ID="HuoZTextBox" SkinID="hengx" Width="160" runat="server" Text='<%#Bind("HuoZ") %>'></asp:TextBox></td>
<td width="25%">单 号<asp:TextBox ID="DanJHMTextBox" SkinID="hengx" Width="160" runat="server" Text='<%#Bind("DanJH") %>'></asp:TextBox></td>
<td width="25%">制单日期<asp:TextBox ID="ZhiDRQTextBox" Width="160" SkinID="hengx" runat="server" Text='<%#Bind("ZhiDRQ") %>'></asp:TextBox></td>
<td width="25%"></td>
</tr>
<tr>
<td >提货仓库<asp:TextBox ID="CangKMCTextBox" runat="server" Width="160" SkinID="hengx" Text='<%#Bind("CangKMC") %>'/></td>
<td >送货性质<asp:TextBox ID="SongHXZTextBox" runat="server" Width="160" SkinID="hengx" Text='<%#Bind("SongHXZ") %>'/></td>
<td >车 号<asp:TextBox ID="CheHTextBox" Width="160" SkinID="hengx" runat="server"></asp:TextBox></td>
<td></td>
</tr>
<tr>
<td >封 号<asp:TextBox ID="HuoHTextBox" Width="160" SkinID="hengx" runat="server"></asp:TextBox></td>
<td>交货单号<asp:TextBox ID="JiaoHDHTextBox" Width="160" SkinID="hengx" runat="server" Text='<%#Bind("JiaoHDH") %>'/></td>
<td colspan="2"></td>
</tr>
<tr>
<td colspan="4" align="center">
<asp:GridView ID="MingXGridView" runat="server" AutoGenerateColumns="False">
<Columns>
<asp:BoundField HeaderText="NO" FooterText="备注">
<ItemStyle HorizontalAlign="Center" />
</asp:BoundField>
<asp:BoundField HeaderText="商品名称">
<ItemStyle HorizontalAlign="Left" />
</asp:BoundField>
<asp:BoundField DataField="PinMXH" HeaderText="型号">
<ItemStyle HorizontalAlign="Left" />
</asp:BoundField>
<asp:BoundField DataField="GuiG" HeaderText="规格" />
<asp:BoundField HeaderText="单位" FooterText="合计" />
<asp:BoundField DataField="ShuL" HeaderText="数量" />
<asp:BoundField HeaderText="实收数" />
<asp:BoundField DataField="BeiZ" HeaderText="备注" />
</Columns>
</asp:GridView>
</td>
</tr>
<tr>
<td ><asp:Label ID="BeiZLabel" runat="server" Text="备 注" Visible="false"/><asp:TextBox ID="BeiZTextBox" SkinID="hengx" runat="server" Text='<%#Bind("BeiZ") %>' Visible="false" /></td>
<td><asp:Label ID="HeJLabel" runat="server" Text="合 计" Visible="false"/><asp:TextBox ID="HeJTextBox" SkinID="hengx" runat="server" Text='<%#Bind("ShuL") %>' Visible="false" /></td>
<td colspan="2"></td>
</tr>
<tr>
<td>制单人<asp:TextBox ID="ZhiDRTextBox" runat="server" SkinID="hengx" Text='<%#Bind("ZhiDR") %>'/></td>
<td>收货人<asp:TextBox ID="ShouHRTextBox" SkinID="hengx" runat="server"/></td>
<td>协作人<asp:TextBox ID="XieZRTextBox" SkinID="hengx" runat="server"/></td>
<td></td>
</tr>
<tr>
<td colspan="3">说明:1.本入库单自签发日起7天内有效:<br/> 2.白联财务留存联,绿联为提货回单联,蓝联为收货单位留存,黄联为运费结算联,红联为仓库留存联<br/></td>
<td align="right">打印人 <asp:TextBox ID="TextBox1" Width="110" runat="server" SkinID="hengx" Text='<%#Bind("DaYR") %>'/><br />打印时间<asp:TextBox ID="DaYSJTextBox" Width="110" SkinID="hengx" runat="server" Text='<%#Bind("DaYSJ") %>'></asp:TextBox>
<br/><asp:Label runat="server" ID="YeMLabel" />
</td>
</tr>
</table>
</ItemTemplate>
</asp:TemplateField>
</Columns>
<PagerStyle CssClass="noprint" />
<RowStyle BorderStyle="None" />
</asp:GridView>
</div>
<p align="center" class="noprint">
<asp:Button ID="DaYButton" runat="server" Text="打印" οnclick="DaYButton_Click" />
<asp:Button ID="GuanBButton" runat="server" onclientclick="javascript:window.close();"
Text="关闭" /></p>
</form>
</body>
</html>
后台:
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using Common;
using System.Collections.Generic;
public partial class HuoDGL_DaY_RuKD : System.Web.UI.Page
{
SqlGetDataBinder SqlGetDataBinder = new SqlGetDataBinder();
int PageRows = 0;
int PageCount = 0;
string BeiZ, ShuL;
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
if (Request.QueryString["LiuSDH"] != null)
{
ViewState["LiuSDH"] = Request.QueryString["LiuSDH"];
ViewState["UserName"] = Request.QueryString["username"].Replace("td", "");
this.GetDataMessage();
}
}
}
//获取要绑定的报表数据
protected void GetDataMessage()
{
if (SqlGetDataBinder.GetDataHasRows("select DanH from ChuRKD where LiuSDH='" + ViewState["LiuSDH"].ToString() + "'"))
{
//获取数据总数
double count = Convert.ToDouble(SqlGetDataBinder.GetFirst("select count(*) from ChuLKDMXB where DanH='" + ViewState["LiuSDH"].ToString() + "'"));
PageCount = Convert.ToInt32(count);
count = count /8;
count = Math.Ceiling(count);
List<string> str = null;
str = SqlGetDataBinder.GetStrList("select ShangJHZXX.ShangJMC,DanH,ChuRKD.BeiZ,CangKMC,SongHXZ,RiQ,CaoZR,JiaoHDH from ChuRKD inner join ShangJHZXX on ShangJHZXX.ShangJBH=ChuRKD.HuoZBH where LiuSDH='" + ViewState["LiuSDH"].ToString() + "'");
ShuL=SqlGetDataBinder.GetFirst("select sum(ShuL) from ChuLKDMXB where DanH='" + ViewState["LiuSDH"].ToString() + "'").ToString();
DataTable table = new DataTable();
table.Columns.Add("HuoZ", typeof(string)); //货主
table.Columns.Add("ZhiDRQ", typeof(string)); //制单日期
table.Columns.Add("DanJH", typeof(string)); //单据号
table.Columns.Add("ZhiDR", typeof(string)); //制单人
table.Columns.Add("DaYSJ", typeof(string)); //打印时间
table.Columns.Add("Title", typeof(string)); //标题
table.Columns.Add("ShuL",typeof(string)); //数量
table.Columns.Add("BeiZ", typeof(string)); //备注
table.Columns.Add("CangKMC",typeof(string)); //仓库名称
table.Columns.Add("SongHXZ",typeof(string)); //送货性质
table.Columns.Add("DaYR",typeof(string)); //打印人
table.Columns.Add("JiaoHDH",typeof(string)); //交货单号
for (double n = 0; n <count; n++)
{
DataRow row = table.NewRow();
row[0] = str[0];
row[1] = Convert.ToDateTime(str[5]).ToShortDateString();
row[2] = str[1];
row[3] = str[6].ToString();
row[4] = DateTime.Now.ToString("g");
row["BeiZ"] = str[2];
row["ShuL"] = ShuL;
row["CangKMC"] = str[3];
row["SongHXZ"] = str[4];
row["DaYR"] = ViewState["UserName"].ToString();
row["JiaoHDH"] = str[7];
table.Rows.Add(row);
}
PageRows = table.Rows.Count;
this.DaYGridView.DataSource = table;
this.DaYGridView.DataBind();
//编号
int BianH=1;
for (int n = 0; n < this.DaYGridView.Rows.Count; n++)
{
GridView grid = (GridView)this.DaYGridView.Rows[n].FindControl("MingXGridView");
for (int p = 0; p < grid.Rows.Count; p++)
{
if (grid.Rows[p].Cells[2].Text.Replace(" ", "").Trim().Length > 0)
{
grid.Rows[p].Cells[1].Text = str[0];
}
grid.Rows[p].Cells[0].Text = BianH.ToString();
BianH++;
}
}
}
}
protected void DaYGridView_RowDataBound(object sender, GridViewRowEventArgs e)
{
if (e.Row.RowType == DataControlRowType.DataRow)
{
//当前页码
int count2 = e.Row.RowIndex;
count2 = count2 *8;
//绑定明细信息
GridView grid = (GridView)e.Row.FindControl("MingXGridView");
if (e.Row.RowIndex == PageRows - 1)
{
grid.ShowFooter = true;
int p = PageCount % 8;
if (p == 0)
{
p =8;
}
DataTable table = new DataTable();
table.Columns.Add("PinMXH", typeof(string));
table.Columns.Add("GuiG", typeof(string));
table.Columns.Add("ShuL", typeof(string));
table.Columns.Add("BeiZ", typeof(string));
table.Columns.Add("XuH",typeof(int)); //序号
for (int n = 0; n < 8- p; n++)
{
DataRow row = table.NewRow();
row[0] = "";
row[1] = "";
row[2] = "";
row[3] = "";
row[4] = 10000000 + n;
table.Rows.Add(row);
}
table.Merge(SqlGetDataBinder.GetDataTable("select top 8 PinMXH,GuiG,cast(ShuL as varchar(10)) as ShuL,BeiZ,XuH from ChuLKDMXB where DanH='" + ViewState["LiuSDH"].ToString() + "' and PinMXH not in (select top " + count2 + " PinMXH from ChuLKDMXB where DanH='" + ViewState["LiuSDH"].ToString() + "' order by XuH asc) order by XuH asc"));
table.DefaultView.Sort = " XuH asc";
grid.DataSource = table;
grid.DataBind();
grid.FooterRow.Cells[1].ColumnSpan = 3;
grid.FooterRow.Cells[2].Visible = false;
grid.FooterRow.Cells[3].Visible = false;
grid.FooterRow.Cells[1].Text = BeiZ;
grid.FooterRow.Cells[5].Text = ShuL;
}
else
{
grid.DataSource = SqlGetDataBinder.GetDataTable("select top 8 PinMXH,GuiG,ShuL,BeiZ from ChuLKDMXB where DanH='" + ViewState["LiuSDH"].ToString() + "' and PinMXH not in (select top " + count2 + " PinMXH from ChuLKDMXB where DanH='" + ViewState["LiuSDH"].ToString() + "' order by XuH asc) order by XuH asc");
grid.DataBind();
}
//设置页码
int index = e.Row.RowIndex + 1;
((Label)e.Row.FindControl("YeMLabel")).Text = "第"+index.ToString()+"页,共"+PageRows+"页";
}
}
protected void DaYButton_Click(object sender, EventArgs e)
{
RegisterStartupScript("c", "<script>window.print();</script>");
}
}