Reporting Services 2005 常见问题解决方法(不断更新)
2009-02-20 12:30
701 查看
在新窗口打开链接
默认跳转到Url是在当前窗口打开,如果要在新窗口打开,使用以下格式输入:
="javascript:void(window.open('" & "url¶1=" & Fields!field1.Value & "','_blank'))"
动态显示嵌入图片
首先拖一个图像控件到位置,然后设置控件的Source属性为Embedded,然后设置Value表达式,不同情况使用不同的嵌入图像名称,形如:
=IIF (Fields!DelayEntityPercent.Value < 10, "prj_green", IIF(Fields!DelayEntityPercent.Value >= 10 And Fields!DelayEntityPercent.Value < 30, "prj_yellow", "prj_red"))
图片在单元格居中
设置Padding的Left到合适的大小
按记录数分页
为表格创建组,并设置在结尾处分页,分组表达式为:Int((RowNumber(Nothing)-1)/10) ,其中10表示没10条记录分一页
嵌入应用应用方案比较
除以零错误号,因为IIF和Switch等函数每个表达式都要计算,所以无法避免错误,因此使用自定义函数解决(调用时使用=Code.SafeDivide(a,b)):
Public Function SafeDivide(ByVal top, ByVal bottom) As Decimal
If IsNothing(top) Or IsNothing(bottom) Then
Return 0
End If
If bottom = 0 Or top = 0 Then
Return 0
End If
Return top / bottom
End Function
隐藏ReportViewer控件的一些导出格式
ReportViewer控件有很多导出格式,下面的代码可以只保留导出Excel:
在设计器里预览时,点击“查看报表",有数据缓存时,点击工具条的刷新按钮可以达到目的
默认跳转到Url是在当前窗口打开,如果要在新窗口打开,使用以下格式输入:
="javascript:void(window.open('" & "url¶1=" & Fields!field1.Value & "','_blank'))"
动态显示嵌入图片
首先拖一个图像控件到位置,然后设置控件的Source属性为Embedded,然后设置Value表达式,不同情况使用不同的嵌入图像名称,形如:
=IIF (Fields!DelayEntityPercent.Value < 10, "prj_green", IIF(Fields!DelayEntityPercent.Value >= 10 And Fields!DelayEntityPercent.Value < 30, "prj_yellow", "prj_red"))
图片在单元格居中
设置Padding的Left到合适的大小
按记录数分页
为表格创建组,并设置在结尾处分页,分组表达式为:Int((RowNumber(Nothing)-1)/10) ,其中10表示没10条记录分一页
嵌入应用应用方案比较
嵌入方式 | 是否需要ReportServer | 是否包含工具栏 | 是否包含参数输入区域 | 部署 | 安全性 | 在何处生成报表 | 总评 |
iframe,设置src为报表Url | 是 | 是,依据报表设定,可显示完整工具栏 | 是,依据报表设定决定显示内容 | Report Server和应用独立部署 | 当前用户需要有权限访问报表 | Report Server | 基本完整利用Reporting Services各种功能,但需要处理权限问题,另外iframe高度设置不够,会有滚动条 |
Iframe,设置src为某个调用Reporting Service API动态生成html的地址 | 是 | 无 | 无 | Report Server和应用独立部署 | 可以模拟用户访问报表 | Report Server | 可解决权限问题,但是没有了Reporting Services的很多优点,还增加了Render成本 |
调用API获得HTML片段 | 是 | 无 | 无 | Report Server和应用独立部署 | 可以模拟用户访问报表 | Report Server | 基本同上,只是省掉了iframe |
ReportViewer+ReportServer(远程方式) | 是,需要一个授权的副本 | 是,依据报表或Report Viewer设定,可显示完整工具栏 | 是,依据报表或Report Viewer设定 | Report Server和应用独立部署,并且在应用的Web.config中添加Report Viewer配置 | 当前应用进程需要有权限访问报表 | Report Server | 基本完整利用Reporting Services功能,但是需要解决权限问题并考虑授权副本的问题,通过实现一个接口来获得报表访问权限 |
RerportViewer+RDLC(本地方式) | 否 | 是,但不完整,缺少一些导出格式及打印按钮 | 否 | 部署应用及报表文件,并且在应用的Web.config中添加Report Viewer配置 | 由应用控制 | 当前应用 | 不能充分利用Reporting Services功能,应用服务器承担了生成报表的计算 |
Public Function SafeDivide(ByVal top, ByVal bottom) As Decimal
If IsNothing(top) Or IsNothing(bottom) Then
Return 0
End If
If bottom = 0 Or top = 0 Then
Return 0
End If
Return top / bottom
End Function
隐藏ReportViewer控件的一些导出格式
ReportViewer控件有很多导出格式,下面的代码可以只保留导出Excel:
protected void reportViewer_PreRender(object sender, EventArgs e) { ReportViewer rw = sender as ReportViewer; if (rw == null) { return; } var renders = from r in rw.ServerReport.ListRenderingExtensions() where string.Compare(r.Name, "Excel", true) != 0 select r; foreach (var r in renders) { HideRender(r); } } private static void HideRender(RenderingExtension re) { Type renderType = re.GetType(); FieldInfo fieldInfo = renderType.GetField("m_serverExtension", BindingFlags.NonPublic | BindingFlags.Instance); object extension = fieldInfo.GetValue(re); Type extensionType = extension.GetType(); PropertyInfo propertyInfo = extensionType.GetProperty("Visible"); propertyInfo.SetValue(extension, false, null); }
在设计器里预览时,点击“查看报表",有数据缓存时,点击工具条的刷新按钮可以达到目的
相关文章推荐
- JQuery Mobile常见问题解决方法和注意事项不断更新
- WSS&MOSS常见问题及解决方法[不断更新]
- 前端常见的浏览器兼容性问题及解决方法(不断更新中)
- Linux 使用过程中常见问题及其解决方法(不定期更新)
- 开发Android的时候遇到的问题及解决方法(不断更新)
- 遇到的一些问题及解决方法(不断更新)
- Linux(Ubuntu)日常问题解决方法(不断更新)
- Android studio在使用过程中常见的问题及解决方法(不定期更新),androidstudi
- 嵌入式VC编程问题与解决方法(不断更新)
- Caffe搭建:常见问题解决办法和ubuntu使用中遇到问题解决方法(持续更新)
- Caffe搭建:常见问题解决办法和ubuntu使用中遇到问题解决方法(持续更新)
- 生产环境使用elasticsearch遇到的一些问题以及解决方法(不断更新)
- Android编程心得-常见问题解决办法(不断更新中..)
- chrome,FireFox与IE中的不兼容问题以及解决方法——(不断更新)
- appframework学习--appframework开发常见问题及解决方法(不定期更新)
- symbian 界面设计常见问题及解决方法(12.15更新)
- QPainter::end: Painter ended with 2 saved states 问题解决方法 (如有新方法,不断更新)
- 运维常见问题及解决方法汇总(持续更新...)
- appframework学习--appframework开发常见问题及解决方法(不定期更新)
- Gradle 导入开源工程 常见问题解决方法(持续更新中)