水晶报表10自定义打印按钮代码

whysoso 2007-05-05 07:32:08
页面WebA中有个按钮"打印报表",我想当点击此按纽的时候就可以打印报表中的东西,而不用用户进入水晶报表页面了,请问如何实现,如果你做过这方面的,请留下你的QQ或MSN,问题解决就100分......谢谢
...全文
490 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
MaxFoAI 2008-07-29
  • 打赏
  • 举报
回复
水晶报表里有个printtoprinter,调用即可打印,你不想显示报表,只使用document,不放上view不就可以了吗?
owenbian 2007-05-08
  • 打赏
  • 举报
回复
做过水晶报表,那些后台代码不可能实现客户端打印,即使指定了客户端的打印机也是一样。报表自己的打印按钮算是好的解决办法了。再就是使用ie的打印,不过你肯定不想这样做。还一个客户端打印办法就是写组件了。 我开发时搜了很多资料,暂时没什么解决办法。
whysoso 2007-05-07
  • 打赏
  • 举报
回复
楼上各位兄弟:
现在的问题是我的系统发布以后,都是客户端打印呀,
二楼说的 strPrinterName = @"VCIT99";
三楼说的 strPrinterName = @"Canon Bubble-Jet BJC-210SP";

这样名称定死了呀..应该如何获取客户端打印机的名称呢?
mdl821120 2007-05-06
  • 打赏
  • 举报
回复
private void btnPrint_Click(object sender, System.EventArgs e)
{
// 指定打印机名称,这里是网络工作站Gigi上的打印机Hp Jet 6
string strPrinterName;
strPrinterName = @"Canon Bubble-Jet BJC-210SP";
// 设置打印页边距
PageMargins margins;
margins = ReportDoc2.PrintOptions.PageMargins;
margins.bottomMargin = 250;
margins.leftMargin = 350;
margins.rightMargin = 350;
margins.topMargin = 450;
ReportDoc2.PrintOptions.ApplyPageMargins(margins);
//应用打印机名称
ReportDoc2.PrintOptions.PrinterName = strPrinterName;
// 打印 // 打印报表。将 startPageN 和 endPageN
// 参数设置为 0 表示打印所有页。
ReportDoc2.PrintToPrinter(1, false,0,0);
}
mdl821120 2007-05-06
  • 打赏
  • 举报
回复
数据绑定:
private void Page_Load(object sender, System.EventArgs e)
{
// Put user code to initialize the page here
string strProvider = "Server=(local);DataBase=C1;UID=sa;PWD=sa";
SqlConnection MyConn = new SqlConnection(strProvider);
MyConn.Open();
string strSel = "Select * from exergy_loss";
SqlDataAdapter MyAdapter = new SqlDataAdapter(strSel,MyConn);
DataSet2 ds = new DataSet2();
MyAdapter.Fill(ds,"exergy_loss");
ReportDoc2.SetDataSource(ds);
crv.ReportSource = ReportDoc2;

}
打印报表:
// 指定打印机名称,这里是网络工作站Gigi上的打印机Hp Jet 6
string strPrinterName;
strPrinterName = @"Canon Bubble-Jet BJC-210SP";
// 设置打印页边距
PageMargins margins;
margins = ReportDoc2.PrintOptions.PageMargins;
margins.bottomMargin = 250;
margins.leftMargin = 350;
margins.rightMargin = 350;
margins.topMargin = 450;
ReportDoc2.PrintOptions.ApplyPageMargins(margins);
//应用打印机名称
ReportDoc2.PrintOptions.PrinterName = strPrinterName;
// 打印 // 打印报表。将 startPageN 和 endPageN
// 参数设置为 0 表示打印所有页。
ReportDoc2.PrintToPrinter(1, false,0,0);
forgot 2007-05-05
  • 打赏
  • 举报
回复
楼上的代码跟打印完全没有关系,正确的做法应该是:
myReport ReportDoc = new myReport();
protected void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
string strProvider = "Server=localhost;DataBase=myDatabase;UID=sa;PWD=";
SqlConnection MyConn = new SqlConnection(strProvider);
MyConn.Open();
string strSel = "Select * from SaleOfCuntry";
SqlDataAdapter MyAdapter = new SqlDataAdapter(strSel, MyConn);
DataSet1 ds = new DataSet1();
MyAdapter.Fill(ds, "SaleOfCuntry");
ReportDoc.SetDataSource(ds);
}
protected void btnPrint_Click(object sender, System.EventArgs e)
{
// 指定打印机名称,这里是网络工作站Gigi上的打印机Hp Jet 6
string strPrinterName;
strPrinterName = @"VCIT99";
// 设置打印页边距
PageMargins margins;
margins = ReportDoc.PrintOptions.PageMargins;
margins.bottomMargin = 250;
margins.leftMargin = 350;
margins.rightMargin = 350;
margins.topMargin = 450;
ReportDoc.PrintOptions.ApplyPageMargins(margins);
//应用打印机名称
ReportDoc.PrintOptions.PrinterName = strPrinterName;
// 打印 // 打印报表。将 startPageN 和 endPageN
// 参数设置为 0 表示打印所有页。
ReportDoc.PrintToPrinter(1, false, 0, 0);

}
whysoso 2007-05-05
  • 打赏
  • 举报
回复
我报表代码如下:
protected CrystalDecisions.Web.CrystalReportViewer crystalone;
classdb myclass=new classdb();
CheckCrystal CheckCrystalOne=new CheckCrystal();

private void Page_Load(object sender, System.EventArgs e)
{
// 在此处放置用户代码以初始化页面
int intbh=Convert.ToInt32(this.Request.QueryString["bh"]);

string sql = "Select * from jl where bh="+intbh+"";
OracleDataAdapter daOrder = new OracleDataAdapter(sql,myclass.cnn);
DataSet ds = new DataSet();
daOrder.Fill(ds,"jl");
CheckCrystalOne.SetDataSource(ds);
crystalone.ReportSource = CheckCrystalOne;

BindCrystalSXK();

}
private void BindCrystalSXK()
{

TextObject ttelphone = CheckCrystalOne.ReportDefinition.ReportObjects["tex_telphone"] as TextObject;
TextObject taddress = CheckCrystalOne.ReportDefinition.ReportObjects["tex_address"] as TextObject;
TextObject tmailnumber = CheckCrystalOne.ReportDefinition.ReportObjects["tex_mailnumber"] as TextObject;
TextObject tfox = CheckCrystalOne.ReportDefinition.ReportObjects["tex_fox"] as TextObject;
TextObject temail = CheckCrystalOne.ReportDefinition.ReportObjects["tex_email"] as TextObject;

this.myclass.ConOpen();
string crystalsql2="select dh,dz,yb,cz,email from sxk ";
OracleCommand cmd=new OracleCommand(crystalsql2,this.myclass.cnn);
OracleDataReader dr=cmd.ExecuteReader();
while(dr.Read())
{
ttelphone.Text=dr[0].ToString();
taddress.Text =dr[1].ToString();
tmailnumber.Text =dr[2].ToString();
tfox.Text = dr[3].ToString();
temail.Text = dr[4].ToString();
}
dr.Close();
this.myclass.ConClose();
}




HTML为:


<%@ Register TagPrefix="cr" Namespace="CrystalDecisions.Web" Assembly="CrystalDecisions.Web, Version=10.0.3300.0, Culture=neutral, PublicKeyToken=692fbea5521e1304" %>
<%@ Page language="c#" Codebehind="ShowOneReport.aspx.cs" AutoEventWireup="false" Inherits="JLGLXT.Crystal.ShowOneReport" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>ShowOneReport</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<CR:CrystalReportViewer id="crystalone" style="Z-INDEX: 101; LEFT: 176px; POSITION: absolute; TOP: 72px"
runat="server" AutoDataBind="true" PrintMode="ActiveX" Width="350px" Height="50px"></CR:CrystalReportViewer>
</form>
</body>
</HTML>
whysoso 2007-05-05
  • 打赏
  • 举报
回复
先谢过大家

4,818

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 图表区
社区管理员
  • 图表区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧