我设计了一个4尺寸(8.5 x 11.0)的rdlc报告。 当我将报告显示到reportviewer时,它将无法在宽度方面正确显示。
下面是截图:
我还为报告查看器编写了几个代码,如下所示:
<div id="dvRpt" runat="Server" style="overflow: auto; width: 100%; height: 440px">
<rsweb:ReportViewer ID="ReportViewer1" ShowPrintButton="true" AsyncRendering="false" SizeToReportContent="true" Width="93%" Height="400px" runat="server">
</rsweb:ReportViewer>
答案 0 :(得分:1)
我遇到了同样的问题。它在Mozilla Firefox中表现良好,但在Google Chrome和现代版本的Internet Explorer上看起来很不错。
深入研究这个问题,我发现报告的内容位于一个标识为oReportCell
的表格单元格中,如下所示:
<div id="oReportDiv">
<table>
<tr>
<td id="oReportCell"><!-- Report content goes here --></td>
<td height="0" width="100%"><!-- Empty cell with problematic width --></td>
</tr>
</table>
</div>
我的修复方法是删除宽度=&#34; 100%&#34;那个细胞。这有点棘手,因为报告是在iframe内生成的,而在其他帧内生成的。使用CSS强制宽度不起作用。
我已经创建了这条JavaScript,它可以在生成报表查看器的页面上运行。当您浏览报告的页面时,它需要监听帧的加载事件。
将ID替换为您的报告查看器ID:
(function() {
var _init = function() {
var reportControl, frameId, frame;
reportControl = document.getElementById('ReportViewer1'); // ID of the ReportViewer control
if (!reportControl || !reportControl.ClientController) return;
frameId = reportControl.ClientController.m_docMapReportFrameID;
if (!frameId) return;
frame = document.getElementById(frameId);
if (!frame || !frame.addEventListener) return;
frame.addEventListener('load', (function(frame) {
return function(e) {
_reportFrameLoaded(frame);
};
})(frame), false);
},
_reportFrameLoaded = function(frame) {
var innerDoc;
innerDoc = frame.contentDocument;
frame = innerDoc.getElementById('report');
if (!frame) return;
frame.addEventListener('load', (function(frame) {
return function(e) {
_innerReportFrameLoaded(frame);
};
})(frame), false);
// If the frame already has content, it may be loaded before
// this load function has run. Call the child onload function now
if (frame.contentDocument) {
_innerReportFrameLoaded(frame);
}
},
_innerReportFrameLoaded = function(frame) {
var innerDoc, cell1;
innerDoc = frame.contentDocument;
cell1 = innerDoc.getElementById('oReportCell');
if (!cell1) return;
if (cell1.nextSibling.hasAttribute('width')) {
cell1.nextSibling.removeAttribute('width');
}
};
if (document.addEventListener) {
document.addEventListener('DOMContentLoaded', _init, false);
}
})();
答案 1 :(得分:0)
使ReportViewer的宽度=&#34; 100%&#34;并尝试
<div id="dvRpt" runat="Server" style="width: 100%; height: 440px">
<rsweb:ReportViewer ID="ReportViewer1" ShowPrintButton="true" AsyncRendering="false" SizeToReportContent="true" Width="100%" Height="400px" runat="server">
</rsweb:ReportViewer>
答案 2 :(得分:0)
<form id="form1" runat="server" >
<div style="Width:auto;">
<rsweb:ReportViewer ID="rptViewer" runat="server" Width="100%" Height="100%" AsyncRendering="False" SizeToReportContent="True">
</rsweb:ReportViewer>
</div>
</form
答案 3 :(得分:0)
只在你的CSS上申请
<style>
table{
width:100%;
}
</style>
答案 4 :(得分:0)
<rsweb:ReportViewer ID="ReportViewer1" runat="server" ProcessingMode="Remote" width="100%"></rsweb:ReportViewer>
这样就可以了。