我在我的asp.net mvc(C#)应用程序中使用Reportviewer。在IE和Firefox中,reportviewer看起来很好。
但在Chrome中,标题和正文会缩小。我能够按照http://www.mazsoft.com/blog/post/2009/08/13/ReportViewer-control-toolbar-in-Google-Chrome-browser.aspx中的建议纠正标题显示问题。
if ($.browser.safari) {
$("#ReportViewerControl table").each(function(i, item) {
$(item).css('display', 'inline-block');
});
}
但是Body(Viewer)部分仍然显示在屏幕的一半。问题似乎是表格的空第二个td
的宽度:
<table cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td onpropertychange="ShowFixedHeaders()" id="oReportCell">....Some Data...</td>
<td height="0" width="100%"></td>
</tr>
</tbody>
</table>
上表中的第二个td为空,宽度为100%,这可能是chrome中bug的原因。如何删除第二个td的宽度或者是否有任何修复? ReportViewer Design http://www.freeimagehosting.net/uploads/13114a4f00.png
如何访问嵌套iframe中的元素?
答案 0 :(得分:6)
如果Reportviewer没有显示数据或者没有在任何浏览器中呈现,那么只需在ASP.NET页面中执行以下操作:
替换:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
带有以下标记:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
答案 1 :(得分:3)
我遇到了同样的问题并用jQuery修复了它。由于报表查看器使用iframe,因此转到需要删除的<TD>
元素并不容易。我尝试了各种方法,最后解决了以下黑客攻击。它可能不是那么好,但它对我有用。
首先,我将报告查看器包装在<DIV>
中并隐藏它:
<div id="rpt-container" style="display: none;">
<rsweb:ReportViewer ID="rptViewer" Width="99.9%" BackColor="#eeeeee"
runat="server" ShowExportControls="False">
</rsweb:ReportViewer>
</div>
然后我添加了以下jQuery代码段来定位要删除的元素,以便在Chrome中成功呈现。
<script type="text/javascript">
$().ready(function() {
setTimeout( function(){
$('td#oReportCell', window.parent.frames[0].frames[1].document).next().remove();
$("#rpt-container").fadeIn();
}, 300); //slight delay to allow the iframe to load
});
</script>
我尝试使用frameReady插件,但没有太多运气。所以作为妥协,我只是在尝试挑选iframe中的DOM元素之前设置大约300毫秒的延迟。如果你没有隐藏/淡化报告,你会看到一些丑陋的动画,因为元素被删除了。
答案 2 :(得分:2)
我的aspx页面上有与ReportViewer类似的问题。在IE9中,我还缩小了报表中的所有字段,因为表中的最后一个TD元素有width=100%
。
在我的Aspx页面中,我使用
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
当我删除此DOCTYPE元素时,报告中的字段不会缩小。
答案 3 :(得分:1)
尝试使用更多jQuery
$().ready(function() {
$('#ReportViewerControl table td[width="100%"]').attr('width','');
});
虽然这可能会影响报告中的其他项目?