报告查看器宽度&背景问题

时间:2013-12-09 14:15:43

标签: asp.net reportviewer report-viewer2010

我是报道服务的新手,无法在我的ASPX页面上正确呈现报表。我已经在 MS报表查看器10上使用asp.net 4.0

应用了以下属性
  

AsyncRendering =“true”SizeToReportContent =“true”Width =“100%”

enter image description here

我的报告采用了页面的背景颜色而不是采用白色,宽度也未正确应用。以上是相同的屏幕截图。

任何建议都赞赏!!

1 个答案:

答案 0 :(得分:4)

将ReportViewer包装在div中。在包装div中设置宽度(通常为100%)和背景颜色(应为白色)。

这将解决背景问题。但是,对于不同的浏览器,您仍会遇到不同的问题:浏览器与浏览器以及版本之间存在不同的问题。

在ReportViewer 11.0中(您可以在web.config中轻松检查ReportViewer版本),即使您将宽度设置为100%,在大多数情况下您也会获得右侧的空白区域。填充它的唯一方法是将样式“width:100%”应用于渲染的报表查看器HTML中的表格。

此表的ID是ClientId控件的ReportViewer,后缀为_fixedTable。例如,如果报告控件的客户端ID为Container1_Container2_ReportViewer1,则会有一个带有Container1_Container2_ReportViewer1_fixedTable的表。如果将样式应用于此表,则会占用所有空间。检查当前版本的FF(25),IE(10)和Chrome(31)。

如果您始终在同一页面中呈现报表,则ClientId以及固定表ID将始终相同,因此您可以将其添加到.CSS文件中:

#Container1_Container2_ReportViewer1_fixedTable {
width: 100%
}

如果不是这种情况,你可以使用这样的CSS3选择器:

table[id$='_fixedTable'] {
width: 100%
}

选择所有id以_fixedTable结尾的表。您使用的确切CSS将取决于您的具体情况,但请记住最具体,更好(仅将其应用于受影响的页面或页面,将其应用于已知容器...请记住“以...结尾”将检查浏览器中的所有表格。所以你可以这样做:

<style type="text/css">
    #<%=reportViewer.ClientID%>_fixedTable {
        width: 100%;
    }
</style>

请注意,无法保证这将解决所有浏览器版本的问题。 reportViewer的HTML非常复杂和棘手,它必然会引发问题。旧版本的reportViewer存在不同的问题,需要不同的解决方案。