水晶报表如何实现证书套打???
在学习开发WEB系统,正使用到水晶报表,在使用过程中碰到这么种情况想向各位高手请教下: 页面刚载入的时候显示的水晶报表页面里面有很多的内容,但是我点击打印按钮后却不需要将整个页面打印出来,而只打印我需要的字段信息就可以了,也就是要实现套打. 但是我现在如果使用水晶报表10自带的打印功能的话只能实现将整个水晶报表页面打印出来(如果我没有在页面载入时控制不打印字段信息不显示的话).现在我想实现水晶报表页面载入显示的是全部信息,也就是提供用户预览,点击打印按钮后我只打印需要的内容,实现套打,这个打印功能我该如何实现,水晶报表自带的打印按钮应该是不可用了,我自己写打印事件的话该如何控制字段信息的显示不显示(后台C#控制)或者控制具体字段的偏移位置等!!! 如果有谁能提供简单范例的那就不盛感谢啊!!!!
--------------------编程问答-------------------- 我是这样做的,在打印事件中,通过循环遍历每个section下的ReportObjects,当判断到它的Kind不等于ReportObjectKind.FieldObject,则把它的ObjectFormat.EnableSuppress设置为false,就不会被打印;打印完成后再把它设置回true --------------------编程问答-------------------- 呵呵~水晶报表下的属性不是太熟`~不知道你有没有简单的范例或者实现代码例子能供我参考下!1网上实在是找不到资料啊 --------------------编程问答-------------------- 实现套打其实都很简单的.首先楼主要在页眉画一个套打的格式,具体怎么就由你定了,然后就传数据集.
下面是一个例子:
1.建一个网面,然后拉一个CrystalReportViewer1控键在窗体,窗体的Page_Load代码如下:
protected void Page_Load(object sender, EventArgs e)
{
string connStr =ConfigurationSettings.AppSettings["ConnString1"].ToString();
SqlDataSource datasource = new SqlDataSource(connStr , "你传进来的SQL语句!");
ReportDocument doc = new ReportDocument();
TableLogOnInfo logininfo = new TableLogOnInfo();
string path;
path = Server.MapPath("report1.rpt");
doc.Load(path);
//强制登陆数据库
string a, b, c, d;
a = System.Configuration.ConfigurationManager.AppSettings[0];
b = System.Configuration.ConfigurationManager.AppSettings[1];
c = System.Configuration.ConfigurationManager.AppSettings[2];
d = System.Configuration.ConfigurationManager.AppSettings[3];
logininfo.ConnectionInfo.ServerName = a;
logininfo.ConnectionInfo.DatabaseName = b;
logininfo.ConnectionInfo.UserID = c;
logininfo.ConnectionInfo.Password = d;
try
{
doc.Database.Tables[0].ApplyLogOnInfo(logininfo);
doc.Database.Tables[0].SetDataSource(datasource.Select(DataSourceSelectArguments.Empty));
CrystalReportViewer1.ReportSource = doc;
}
catch
{
Response.Write("<script>alert('输出报表失败,请检查输入信息或网络!');</script>");
}
}
上面的代码就可以搞定报表的输出!楼主结贴...给分..哈. --------------------编程问答-------------------- 哈~~要真这么简单就好了,数据绑定我又不是不会,看来楼上的这位没看清楚我的问题啊!!!或者还是我自己想复杂了? --------------------编程问答-------------------- 人怎么一下都没了?顶上去 --------------------编程问答-------------------- 给段代码你参考一下:
//套打隐藏处理
public void SetSuppressForPrint(bool EnableSuppress)
{
for (int k = 0; k < this.rptReport.Section1.ReportObjects.Count; k++)
{
if (this.rptReport.Section1.ReportObjects[k].Kind != ReportObjectKind.FieldObject)
this.rptReport.Section1.ReportObjects[k].ObjectFormat.EnableSuppress = EnableSuppress;
}
}
在打印事件中:
SetSuppressForPrint(true);//屏蔽不被打印的非字段标签
//直接打印
this.rptReport.PrintToPrinter(1, true, 1, 1);
SetSuppressForPrint(false);//恢复
字段或标签的属性EnableSuppress 为true时,屏蔽;为false取消屏蔽,上午我说反了。
--------------------编程问答-------------------- lz要干嘛? --------------------编程问答-------------------- 有问题请先GOOGLE,BAIDU --------------------编程问答-------------------- 我也想知道呀,解决了吗 --------------------编程问答-------------------- WEB下票据套打用Grid++是最便捷的解决方案,参考演示:http://www.rubylong.cn/doc/print_bill_index.htm
补充:.NET技术 , 图表区