你好,
假设我做有某市学校信息系统,系统的采用silverlight开发,使用对象是各校的老师、教导主任、校长、局长之类.
要求实现报表的动态显示、打印和PDF的导出。
为了实现多人合作开发,我安排一人专门进行报表模板设计,一人负责后台数据动态配置。
现在报表设计人员设计了如何下几种报表模板:
1.学校明细表A
2.教师明细表B
3.学生明细表C
前端silverlight开发出各种查询统计的界面,上面有放置一个打印预览按钮,
系统登陆者根据各自的权限依据自己的查询条件检索出所要的数据,点击打印预览按钮通过
GrapeCity.ActiveReports.Viewer.Silverlight.v8进行显示
实现方式一:
服务端创建web服务,增加各类报表实现方法,其参数内容由客户端传过来,服务端返回字节流 //
前段下面代码实现展示,
System.IO.MemoryStream ms = new System.IO.MemoryStream(e.Result);
GrapeCity.Viewer.Common.StreamDocumentLoader loader = new GrapeCity.Viewer.Common.StreamDocumentLoader(ms, GrapeCity.Viewer.Common.DocumentFormat.Rdf);
viewer1.LoadDocument(loader);
但此种方式下报表无法实现导出pdf功能
实现方式二:客户端传参过来,服务端生成文件并返回成功于否
其后客户端调用 viewer1.LoadFromService("..\\PageReport1.rdlx");进行显示 //据说可以实现pdf导出
但这种方式下PageReport1.rdlx就必须调用前先生成磁盘文件,
如果多人同时操作就必然产生一堆文件,而且生成磁盘文件效率也较低,文件名相同等问题,
还要考虑文件后期删除等问题
不知道有没有更好的办法? |
|