谷歌浏览器中的ReportViewer问题

时间:2010-01-26 12:08:02

标签: jquery asp.net-mvc reportviewer

我在我的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中的元素?

4 个答案:

答案 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','');
});

虽然这可能会影响报告中的其他项目?