IE7 ReportViewer Control - PullRequest
       24

IE7 ReportViewer Control

3 голосов
/ 12 июля 2011

У меня есть сайт, который я создал и который хорошо работает для всех в IE8 / IE9, Chrome и FireFox.Тем не менее, теперь мой клиент просит, чтобы это работало и в IE7, так как на машине все еще есть IE7.Я не могу понять, что не так с элементом управления ReportViewer.Любая помощь будет принята с благодарностью.

Проблема в том, что мой отчет выходит за пределы заданной высоты и ширины;он не остается в DIV, который я обернул вокруг него с помощью jQuery

jQuery Code

 $(document).ready(function () {
            var htmlwidth = $('.main').width() - 20;
            var htmlheight = $(document).height() - $('.header').height() - 45;
            $('#<%= ReportViewer1.ClientID %>').wrap('<div style="overflow:auto;" />');
            $('#<%= ReportViewer1.ClientID %>').parent().css(height, htmlheight);
            $('#<%= ReportViewer1.ClientID %>').parent().css('width', htmlwidth);
            $('#<%= ReportViewer1.ClientID %>').css('width', htmlwidth);
            $('#<%= ReportViewer1.ClientID %>').css(height, htmlheight);
            $('#<%= ReportViewer1.ClientID %>').parent().css('border', 'solid 1px Black');
    });

Содержимое

<asp:ScriptManager ID="scManager" runat="server"></asp:ScriptManager>
<rsweb:ReportViewer ID="ReportViewer1" runat="server" Height="100%"  Width="100%"
    SizeToReportContent="true" ZoomMode="Percent" AsyncRendering="false" >
</rsweb:ReportViewer>

Образец сгенерированного блока {content + jQuery Code}

<div style="width:500px; overflow:auto; border:solid 1px Black;height:400px;">
    <asp:ScriptManager ID="scManager" runat="server"></asp:ScriptManager>
    <rsweb:ReportViewer ID="ReportViewer1" runat="server" Height="400px"  Width="500px"
        SizeToReportContent="true" ZoomMode="Percent" AsyncRendering="false" >
    </rsweb:ReportViewer>
</div>

1 Ответ

5 голосов
/ 12 июля 2011

Похоже, вы столкнулись с проблемой переполнения IE7. Вы можете прочитать больше об этом здесь

Чтобы решить вашу проблему, установите для внешнего div значение position: relative

Добавьте следующую строку в ваш jQuery:

$('#<%= ReportViewer1.ClientID %>').parent().css(position, relative);

Или добавьте следующее к wrap ()

$('#<%= ReportViewer1.ClientID %>').wrap('<div style="overflow:auto; position:relative;" />');

Окончательный вывод должен выглядеть примерно так:

<div style="width:500px; overflow:auto; border:solid 1px Black;height:400px; position:relative;">
    <asp:ScriptManager ID="scManager" runat="server"></asp:ScriptManager>
    <rsweb:ReportViewer ID="ReportViewer1" runat="server" Height="400px"  Width="500px"
        SizeToReportContent="true" ZoomMode="Percent" AsyncRendering="false" >
    </rsweb:ReportViewer>
</div>
...