2009-02-27 25 views

Respuesta

0

No he notado ningún problema real con su visualización en Firefox o Safari. A veces creo que podría mejorarse en Firefox, pero no tengo ningún punto de referencia real para respaldarlo.

+0

¿Estás ciego? Los bordes de la tabla, el texto vertical (rotar 270), la alineación de la imagen, los campos de texto (cualquier cosa que no esté en la tabla), el ancho del borde, etc. ...Puede tomar 3 versiones diferentes de Internet Explorer, y obtiene 3 resultados diferentes. –

0

SSRS funciona perfectamente en IE6,7,8. Funciona en Firefox y Safari, pero con problemas de visualización.

Existen dos soluciones posibles para solucionarlos, probar y ver lo que funcione para usted.

Solución 1

Ir a

C:. \ Archivos de programa \ Microsoft SQL Server \ MSSQL (el servidor de informes ejemplo) \ Reporting Servicios \ ReportServer \ Páginas \ ReportViewer .aspx

estilo Update como

<body style="margin: 0px; overflow: auto"> ... <RS:ReportViewerHost style="display:table;" ID="ReportViewerControl" runat="server" /> 

Solución 2

Agregar siguientes cambios en hoja de estilo:

.DocMapAndReportFrame {min-height: 660px; min-ancho: 1280px; }
.MenuBarBkGnd {min-width: 1000px; }

+1

Cita: "SSRS funciona perfectamente en IE6,7,8". Sí, pero no en IE 9, 10 y 11 ... ¿Alguien sigue usando IE <= 8? Cita: "mostrar problemas" No muestran problemas. Son BUGS en SSRS: el HTML generado es peculiaridades, también conocido como WRONG. –

0

problemas de visualización con Firefox, Chrome y Safari. Sé que para Firefox y Chrome, hay complementos de IE que te permiten ejecutar el informe en una pestaña de Firefox/Chrome.

3

MS Report Viewer Control funcionará bien en IE solamente. Se puede ver los informes de otros navegadores, pero puede no poder ver opción de zoom

+0

La opción de zoom será el menor de sus problemas. –

24

Editar - 2016/2017 Actualizar

SSRS 2016+ se puede decir que sea compatible entre navegadores.
Los bordes de la tabla no se muestran correctamente en IE10, pero IE10 está desapareciendo de todos modos.
En el resto de los navegadores, está bien.

Aún necesita registrar add_pageLoaded para traducir las solicitudes de parámetros.

Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(function() { fixReportingServices('rpt-container'); }); 

También, al igual que en las versiones < 2016, es necesario agregar PageCountMode="Actual" a RS:ReportViewerHost control.

<RS:ReportViewerHost ID="ReportViewerControl" PageCountMode="Actual" runat="server" /> 

si quiere tener números de megafonía significativos.

Además, hay un problema cuando configura el idioma en la cadena de consulta con fechadores (con SSRS < 2016 también). Debe establecer context.Request.UserLanguages[i] en el idioma especificado en la cadena de consulta en context.BeginRequest en un módulo HTTP, si desea que datepicker funcione con un idioma que no sea del navegador.

Además, debe agregar los encabezados HTTP X-Frame-Options y Content-Security-Policy en cada respuesta HTTP, si desea utilizar SSRS en un iframe en Internet de forma segura. Ver my github-repository for details.

</EndEdit> 

Pre-2016:

te puedo decir, tengo 9 años de experiencia con el maldito (SSRS 2005, SSRS 2008 R2 R1 &, 2012, 2014 y SSRS).

Déjeme asegurarle que, dado que los informes HTML de SSRS dependen de IE5-Quirksmode, no hay ninguna posibilidad en el infierno de que se procesen correctamente en cualquier navegador que no sea Internet Explorer (IE < 10 podría inclinarme a agregar).

SI tiene acceso de administrador al servidor de informes, e insisto en el IF, puede agregar rutinas jQuery y CSS en la página ReportViewer para corregir los problemas más básicos (como que no ve más de 1 cm del informe), pero, de lo contrario, la representación HTML se verá absolutamente horrible (márgenes, bordes de tabla, acolchados de imágenes, tamaño de columna, tamaño de campo de texto, título y/o alineación de número de página, etc., en resumen, casi cualquier cosa)

Por supuesto, el control de la impresora ActiveX solo puede funcionar en InternetExplorer (en Windows), porque solo se admiten ActiveX.

Permítame asegurarle que no hay forma de que ReportManager funcione en ningún otro navegador que no sea IE.

En cuanto al soporte de Internet Explorer, se debe mencionar que a partir de IE versión 10, IE usa webkit-quirksmode (por razones de compatibilidad) en lugar de IE5 quirksmode, por lo que el HTML renderizado se verá igual de horrible que en Chrome/Firefox/Safari para IE 10+, a menos que haya agregado IE5 compatible con meta xua en la página ReportViewer.aspx.

Este último podría no aplicar para la Intranet, como IE cae automáticamente a modo de IE 7 compatibilidad cuando está en un sitio de intranet (pero sólo en cualquier versión de Windows 8 <). En Windows 8, los enlaces de localhost y nombres de equipo (no se puede agregar http: // en stackoverflow posts) no están asignados a la zona de intranet local (probablemente como hack rápido para que IE no vuelva a compatibilidad con IE7 modo), y por lo tanto, la autenticación de Windows fallará.

También se debe mencionar que no es posible agregar IE5 compatible con meta xua para ReportManager, porque no hay una página que pueda editar (sitio web ASP.NET-proyecto compilado no actualizado ...).
Y a falta de usar las herramientas de desarrollo para cambiar el administrador de informes en el modo peculiar, no es posible usar ReportManager en IE 10+.

Luego, otra cosa para mencionar es que, a partir de IE9, IE hereda el doctype de los elementos de iframe de la página principal, y no hay manera de cambiar eso tampoco (sin cambiar la página principal a la deseada child-page doc-mode).

Así que si fue lo suficientemente astuto como para utilizar iframes para los informes, porque no hay forma de que una persona en su sano nombre quiera popups en la era de los bloqueadores de ventanas emergentes, la página de informe heredará el doctype de la página principal. Si no es IE5-QuirksMode, los informes serán igualmente horribles como en Safari/Chrome/Firefox/Opera para cualquier IE> 8, independientemente de cualquier posible etiqueta ie5 compatible con meta xua en ReportViewer.aspx.

En cuanto a las alternativas, de forma gratuita y con un conjunto de características similar, solo hay Eclipse BIRT (afortunadamente, la representación HTML no es similar).

Cabe mencionar que BIRT, aunque está licenciado bajo la Licencia Pública de Eclipse, usa SUN Java y por lo tanto está utilizando la tecnología de Oracle, que está sujeta a sus respectivos términos de licencia.
Además, está utilizando tecnología que no es de Microsoft, y los renders BIRT de Excel-Sheets son en realidad archivos XML, que producirán (quién lo hubiera adivinado) una advertencia bastante alarmante al abrir en Office 2010+.

Entonces, por una tarifa bastante grande, hay http://www.stimulsoft.com informes, y Telerik informa.
Desde el aspecto técnico de la misma, recomendaría los informes de stimulsoft, pero: descargo de responsabilidad, no he utilizado ninguno de estos, porque no son gratuitos.

En cuanto a los motores de representación SSRS alternativos (no espectadores por cierto), solo está www.fyireporting.com/, que tiene un tenedor aquí http://www.codeproject.com/Articles/138271/An-Open-Source-RDL-Engine.

Pero fyiReporting está incompleto y en proceso (si no se abandona), así que me abstendría de usarlo.


En pocas palabras, si su producto es IE sólo & ventanas, con la versión de Windows 8 < (y no - no < = en caso de que no ha estado prestando atención), en la intranet, llamado desde emergente ups y no iframes, luego vaya con SSRS.
Para cualquier otra cosa, use los informes de stimulsoft (el problema es que debe volver a hacer todos los informes, ya que no hay migración automatizada, ni siquiera una que no funciona).

PS:
Y añadiendo "un poco de javascript", me refiero a lo de abajo (2008 R1 edición, no funcionará en 2008R2 +, puede funcionar en 2005, y tenga en cuenta que necesita integrar jQuery y jQuery Migrate en una etiqueta de script en línea, si las PC del cliente no tienen acceso a http (s): //ajax.aspnetcdn.com [nota: poner las secuencias de comandos en la carpeta Páginas y agregar un enlace relativo o absoluto ganado ' t trabajo ...]):

<%@ Register TagPrefix="RS" Namespace="Microsoft.ReportingServices.WebServer" Assembly="ReportingServicesWebServer" %> 
<%@ Page Language="C#" AutoEventWireup="true" Inherits="Microsoft.ReportingServices.WebServer.ReportViewerPage" %> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 

<%= System.Web.HttpContext.Current.Request.Browser.Browser == "IE" && System.Globalization.CultureInfo.InvariantCulture.CompareInfo.IndexOf(System.Convert.ToString(System.Web.HttpContext.Current.Request.QueryString), "stylesheet", System.Globalization.CompareOptions.IgnoreCase) == -1 ? (System.Web.HttpContext.Current.Request.Browser.Browser != "IE" ? "": "<meta http-equiv=\"X-UA-Compatible\" content=\"IE=5\">") : "<meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge,chrome=1\">" %> 

    <head id="headID" runat="server"> 
    <title>Report Viewer</title> 




    <script type="text/javascript" src="//ajax.aspnetcdn.com/ajax/jQuery/jquery-1.9.1.min.js"></script> 
    <script type="text/javascript" src="//ajax.aspnetcdn.com/ajax/jquery.migrate/jquery-migrate-1.1.0.min.js"></script> 



    <script type="text/javascript"> 

     var bInFrameOrIframe = false; 
     var iLanguageIndex = 0; 
     var language = "DE_LOL"; 
     var UpdateLock = false; 



     if (window.self === window.top) { 
      // alert("true"); 
      // not in a frame 
      // Use IE5 quirksmode 
      //document.writeln('<meta http-equiv="X-UA-Compatible" content="IE=5" />'); 
      bInFrameOrIframe = false 
     } 
     else { 
      // in a frame, FMS 
      bInFrameOrIframe = true; 
     } 


     function TranslateParameterPrompts() { 

      //mTo = false; 
      $("table[id^='ParametersGridReportViewerControl'] span").each(function(index) { 
       var strText = $(this).text(); 
       if (strText != null && strText.indexOf('/') != -1) { 
        strText = strText.split('/'); 
        if (iLanguageIndex < strText.length) 
         strText = strText[iLanguageIndex]; 
        else { 
         if (strText.length > 0) 
          strText = strText[0]; 
        } 

        $(this).text(strText); 
       } 

      }); 

      //setTimeout(function(){mTo = true}, 5000); 
     } 


     function setTableSize() { 
      //$("[id$='ReportViewerControl']") 
      $(
       $(
        $("#ReportFrameReportViewerControl")[0].contentWindow.document 
       ) 
       .find("[id$='report']")[0].contentWindow.document.body 
      ).find('*') 
      .each(function() { 
       //console.log("Processing an element"); 
      //var cls = $(this).attr("class"); 

      try { 

        // Don't add a border to sort-arrow 
        if ($(this).is('img')) { 
         return; 
        } 


        var anywidth = $(this).css('width'); 
        var anywidth = parseFloat(anywidth); 
        //console.log("anywidth: " + anywidth); 


        //var lol = $(this).css('borderLeftWidth'); 
        var blw = $(this).css('border-left-width'); 
        var brw = $(this).css('border-right-width'); 
        var btw = $(this).css('border-top-width'); 
        var bbw = $(this).css('border-bottom-width'); 

        var borls = $(this).css('border-left-style') == "solid"; 
        var borrs = $(this).css('border-right-style') == "solid"; 
        var borts = $(this).css('border-top-style') == "solid"; 
        var borbs = $(this).css('border-bottom-style') == "solid"; 



        var blw = parseFloat(blw); 
        var brw = parseFloat(brw); 
        var btw = parseFloat(btw); 
        var bbw = parseFloat(bbw); 

        //parseInt($(this).css("borderRightWidth")) 
        //console.log(parseInt($(this).css("borderLeftWidth"))); 

        UpdateLock = true; 


        // Set width to 1px where 0px 
        if (anywidth == 0) 
         $(this).css('width', '1px'); 


        if (borls && blw == 0.0 || (blw > 0.0 && blw < 1.0)) { 
         //console.log("setting border width"); 
         $(this).css('border-left-width', '1px'); 
        } 

        if (borrs && brw == 0.0 || (brw > 0.0 && brw < 1.0)) { 
         $(this).css('border-right-width', '1px'); 
        } 

        if (borts && btw == 0.0 || (btw > 0.0 && btw < 1.0)) { 
         $(this).css('border-top-width', '1px'); 
        } 

        if (borbs && bbw == 0.0 || (bbw > 0.0 && bbw < 1.0)) { 
         $(this).css('border-bottom-width', '1px'); 
        } 

        UpdateLock = false; 
       } 
       catch (ex) { 
        UpdateLock = false; 
        //console.log(ex); 
       } 

      });    // End $('*').each 

      // console.log("loop"); 




      var $img = $("img[onload^='this.fitproportional=true']"); 
      if ($img == null) { 
       // console.log("img is null"); 
       return; 
      } 
      var $div = $img.parent(); 
      if ($div == null) { 
       // console.log("div is null"); 
       return; 
      } 

      UpdateLock = true; 
      { 
       $img.removeAttr("height"); 
       $img.css('max-width', '100%') 
       $img.css('max-height', '100%') 

       $div.css('text-align', 'right'); 

       var divMinWidth = parseFloat($div.css('min-width')); 
       var divWidth = parseFloat($div.css('width')); 

       var divMinHeight = parseFloat($div.css('min-height')); 
       var divHeight = parseFloat($div.css('height')); 

       // console.log("width: " + divWidth); 
       // console.log("height: " + divHeight); 
       // console.log("min-width: " + divMinWidth); 
       // console.log("min-height: " + divMinHeight); 

       if (divMinWidth != 0) 
        $div.css('width', $div.css('min-width')); 

       if (divMinHeight != 0) 
        $div.css('height', $div.css('min-height')); 

      } 
      UpdateLock = false; 

     } 


     $(document).ready(function() { 

      switch (language) { 
       case "fr": 
        iLanguageIndex = 1; 
        break; 
       case "it": 
        iLanguageIndex = 2; 
        break; 
       case "en": 
        iLanguageIndex = 3; 
        break; 
       default: // "DE" 
        iLanguageIndex = 0; 
      } 

      TranslateParameterPrompts(); 
      // setInterval(function() { TranslateParameterPrompts() }, 100); 


      if ($.browser.msie && !bInFrameOrIframe) 
       return; 

      // if ($.browser.webkit) 
      //setTableSize(); 

      $("[id$='ReportFrameReportViewerControl']").load(function() { 
       //setNewHeight(); 
       //alert("Loading"); 

       setTableSize(); 

       $(
        $("[id$='ReportFrameReportViewerControl']")[0].contentWindow.document 
       ) 
       .find("[id$='report']").load(function() { 
        //alert("load report"); 
        setTableSize(); 
       } 
       ); // End load #report 

      }); // End Function load #ReportFrameReportViewerControl 

     }); // End Function document.ready 

    </script> 

</head> 
<body style="margin: 0px; overflow: auto"> 
    <form style="width:100%;height:100%" runat="server" ID="ReportViewerForm"> 
     <RS:ReportViewerHost ID="ReportViewerControl" runat="server" /> 
    </form> 
</body> 
</html> 

Nota: UpdateLock se deriva a partir de 2012 backport y realmente no se utiliza aquí, y la lengua se deriva de backport también, setInterval en TranslateParameterPrompts es necesario en 2012 y función para 2012 comprende solamente la pequeña adición de "etiqueta" en el selector de jQuery ...

function TranslateParameterPrompts() { 

     //mTo = false; 
     $("table[id^='ParametersGridReportViewerControl'] label span").each(function(index) { 
      var strText = $(this).text(); 
      if (strText != null && strText.indexOf('/') != -1) { 
       strText = strText.split('/'); 
       if (iLanguageIndex < strText.length) 
        strText = strText[iLanguageIndex]; 
       else 
       { 
        if(strText.length > 0) 
         strText = strText[0]; 
       } 

       $(this).text(strText); 
      } 

     }); 

     //setTimeout(function(){mTo = true}, 5000); 
    } 

infering el idioma del idioma del navegador es la siguiente, por cierto:

<script type="text/javascript"> 
    language = <%= System.Web.HttpContext.Current.Request.UserLanguages != null ? "\"" + System.Convert.ToString(System.Web.HttpContext.Current.Request.UserLanguages[0]) + "\"" : "null" %>; 

    if(language == null) 
     language = window.navigator.userLanguage || window.navigator.language; 

    if(language != null) 
     language = language.substr(0,2).toLowerCase(); 

</script> 

Y en 2012 se necesita deshacerse de las cookies de sesión, si no se obtiene "HTTP 400: Cabecera demasiado tiempo" después de abrir cerca de 120 informes:

<script type="text/C#" runat="server"> 
protected string ClearSessionKeepAliveCookiesToPreventHttp400HeaderTooLong() 
{ 
    if(Request == null || Request.Cookies == null) 
     return ""; 

    if(Request.Cookies.Count < 60) 
     return ""; 

    // System.Web.HttpContext.Current.Response.Write("<h1>"+Request.Cookies.Count.ToString()+"</h1>"); 
    for(int i = 0; i < System.Web.HttpContext.Current.Request.Cookies.Count; ++i) 
    { 
     if(StringComparer.OrdinalIgnoreCase.Equals(Request.Cookies[i].Name, System.Web.Security.FormsAuthentication.FormsCookieName)) 
      continue; 

     if(!Request.Cookies[i].Name.EndsWith("_SKA", System.StringComparison.OrdinalIgnoreCase)) 
      continue; 

     if(i > 60) 
      break; 

     //System.Web.HttpContext.Current.Response.Write("<h1>"+Request.Cookies[i].Name+"</h1>"); 

     System.Web.HttpCookie c = new System.Web.HttpCookie(Request.Cookies[i].Name); 
     //c.Expires = System.DateTime.Now.AddDays(-1); 
     c.Expires = new System.DateTime(1970, 1 ,1); 
     c.Path = Request.ApplicationPath + "/Pages"; 
     c.Secure = false; 
     c.HttpOnly = true; 

     // http://stackoverflow.com/questions/5517273/httpcookiecollection-add-vs-httpcookiecollection-set-does-the-request-cookies 
     //Response.Cookies[Request.Cookies[i].Name] = c; 
     //Response.Cookies.Add(c); 
     Response.Cookies.Set(c); 
    } 

    return ""; 
} 


</script> 

Y en 2012, es necesario escuchar a la actualización de contenidos, ya que utiliza Microsoft Ajax controla

function cbOnContentUpdate() { 
    //console.log("content update"); 
    alterTableBorderWidth(); 
    // TranslateParameterPrompts(); 
} // End Callback cbOnContentUpdate 


var hLastTimeout = null; 

function queueUpdate() { 

    if (UpdateLock) 
     return; 


    if (hLastTimeout != null) 
     clearTimeout(hLastTimeout); 

    hLastTimeout = window.setTimeout(function() { cbOnContentUpdate(); }, 50); 

    //window.setTimeout(function() { cbOnContentUpdate(); }, 3000); 
} // End Function queueUpdate 


$(document).ready(function() { 

    switch (language) { 
     case "fr": 
      iLanguageIndex = 1; 
      break; 
     case "it": 
      iLanguageIndex = 2; 
      break; 
     case "en": 
      iLanguageIndex = 3; 
      break; 
     default: // "DE" 
      iLanguageIndex = 0; 
    } 

    setInterval(function() { TranslateParameterPrompts() }, 100); 

    // opt-out for non-framed IE, because that crook supports IE5-Quirks (framed takes parent-doctype in IE >= 9) 
    if ($.browser.msie && !areWeInFrame()) 
     return; 


    // if ($.browser.webkit) 

    // console.log('Setting event listener!'); 

    // http://stackoverflow.com/questions/4979738/fire-jquery-event-on-div-change 
    //$("[id$='ReportViewerControl']").bind('DOMNodeInserted DOMNodeRemoved', function(event) { 
    //$("[id$='ReportArea']") 
    $("body") 
    .bind('DOMNodeInserted DOMNodeRemoved DOMSubtreeModified', function(event) { 

     if (event.type == 'DOMNodeInserted') { 
      //console.log('Content added! Current content:' + '\n\n' + this.innerHTML); 
      //console.log('Content added!'); 
      queueUpdate(); 
     } 
     else { 
      //console.log('Content removed! Current content:' + '\n\n' + this.innerHTML); 
      //console.log('Content removed!'); 
      queueUpdate(); 
     } 
    }); // End Bind IRM 

}); // End Function $(document).ready 

y tenga en cuenta que para el año 2012, es setTableSize alterTableBorderWidth, y el selector es la siguiente:

function alterTableBorderWidth() 
     { 
      //$('*') 
      $("[id$='ReportViewerControl']").find('*') 
      .each(function() { 

Por cierto, si desea eliminar el ícono IMPRIMIR, porque es solo una fuente de tristeza, esto es así (en alemán, inglés, francés e italiano [los idiomas hablados en Suiza + inglés]).

Este CSS es para 2008 R1, no sé y cuidado si se trata de la misma en 2012.

input[type="image"][title="Drucken"], input[type="image"][title="Print"], input[type="image"][title="Imprimer"], input[type="image"][title="Stampa"] 
{ 
    display: none !important; 
} 

Y si eso todavía no le disuade, entonces adelante y utilizar formas de autenticación en SSRS 2012 (sugerencia 1: no hay muestras proporcionadas por mss para 2005-2008R2, necesita escribirlas usted mismo);)

Sugerencia 2: si siguió la sugerencia 1, la redirección de autenticación de formularios no funciona cuando tiene una dos puntos en la URL [¿error?], puede robar el código de mono y escribir su propia redirección.

Sugerencia 3: si siguió hint2 y la autenticación de formularios funciona, entonces probablemente desee cambiar la herramienta de carga que va a escribir, porque no le gustaría hacerlo manualmente "para cada informe browse-directory - check permitir casilla de anulación - informe de carga - del origen de datos) de 120 informes más o menos, entonces se le hereda una clase de ReportingService2005 y anular GetWebRequest y GetWebResponse

''' <summary> 
''' Overriding the method defined in the base class. 
''' </summary> 
''' <param name="uri"></param> 
''' <returns></returns> 
Protected Overrides Function GetWebRequest(uri As Uri) As System.Net.WebRequest 
    Dim request As System.Net.HttpWebRequest 
    request = DirectCast(System.Net.HttpWebRequest.Create(uri), System.Net.HttpWebRequest) 
    request.Credentials = MyBase.Credentials 
    request.CookieContainer = New System.Net.CookieContainer() 

    If m_authCookie IsNot Nothing Then 
     request.CookieContainer.Add(m_authCookie) 
    End If 

    Return request 
End Function ' GetWebRequest 



''' <summary> 
''' Overriding the method defined in the base class. 
''' </summary> 
''' <param name="request"></param> 
''' <returns></returns> 
Protected Overrides Function GetWebResponse(request As System.Net.WebRequest) As System.Net.WebResponse 
    Dim response As System.Net.WebResponse = MyBase.GetWebResponse(request) 

    ' http://social.msdn.microsoft.com/Forums/sqlserver/en-US/f68c3f2f-c498-4566-8ba4-ffd5070b8f7f/problem-with-ssrs-forms-authentication 
    Dim cookieName As String = response.Headers("RSAuthenticationHeader") 
    If cookieName IsNot Nothing Then 
     m_authCookieName = cookieName 
     Dim webResponse As System.Net.HttpWebResponse = DirectCast(response, System.Net.HttpWebResponse) 
     Dim authCookie As System.Net.Cookie = webResponse.Cookies(cookieName) 

     ' Save it for future reference and use. 
     m_authCookie = authCookie 
    End If 

    Return response 
End Function ' GetWebResponse 

Pista 4: Los métodos anteriores no funcionarán si remanso 't instaló service pack 1 + 2 en SSRS 2008 R2 ...

Sugerencia 5: The TranslateParameters m étodo está ahí porque no se puede (por diseño) traducir el parámetro impulsa a varios idiomas por SSRS, por lo que escribir:

Raum/Local/Locale/Room 

que utiliza el esquema:

Text_DE/Text_FR/Text_IT/Text_EN 

y luego hacer dividido por '/' en el texto (que es un poco propenso a errores si el texto de su solicitud contiene '/' en algún lugar), y luego seleccione el texto correcto por índice del idioma, eligiendo MIN (splitarray.longitud, índice) por cierto, por si acaso solo tienes Text_DE/Text_FR o lo que sea, primero comprueba si el texto contiene un '/' en absoluto, por supuesto.

Sugerencia 6: ¿Debo continuar? (Todavía podría expandir esta publicación a un tamaño diez veces mayor, pero creo que debería volver a trabajar ahora :))

Si quieres ver qué aspecto tiene f * up, así es como vanilla ssrs representa en cromo

Vanilla SSRS chrome

esto es lo que parece en IE11, con compatibilidad IE5 establecido a través de Xua

Geb

y esto es lo que debería ser, y lo que puede conseguir que se rinde con mucha jugando con JavaScript y CSS SSRS in Chrome with CSS and JS applied

Adición:
Ah, y se pone aún mejor

Si desea ejecutar ReportViewer en un idioma especificado por la aplicación (que no es idéntica a la del idioma del navegador), es necesario establecer la cultura de ReportViewer a la cultura especificada en su cadena de consulta ...

<script type="text/C#" runat="server"> 
    protected override void InitializeCulture() 
    { 
     string sprache = System.Web.HttpContext.Current.Request.QueryString["in_sprache"]; 

     // System.Web.HttpContext.Current.Response.Write(sprache); 

     switch(System.Globalization.CultureInfo.InvariantCulture.TextInfo.ToLower(sprache)) 
     { 
      case "fr": 
       sprache = "fr-CH"; 
       break; 
      case "it": 
       sprache = "it-CH"; 
       break; 
      case "en": 
       sprache = "en-US"; 
       break; 
      default: 
       sprache = "de-CH"; 
       break; 
     } 

     // System.Web.HttpContext.Current.Response.Write(sprache); 

     System.Threading.Thread.CurrentThread.CurrentCulture = System.Globalization.CultureInfo.CreateSpecificCulture(sprache); 
     System.Threading.Thread.CurrentThread.CurrentUICulture = new System.Globalization.CultureInfo(sprache); 
     base.InitializeCulture(); 
    } 



</script> 

Si desea establecer un cultivo estático, puede hacerlo en la declaración de la página

<%@ Page UICulture="de" Culture="de-CH" %> 

Y si intenta quitar el el icono de impresión y el átomo de alimentación, haciéndolo con estilos, no importa cómo, sólo funciona en Chrome ...

input[type="image"][title="Drucken"], input[type="image"][title="Print"], input[type="image"][title="Imprimer"], input[type="image"][title="Stampa"] 
    { 
     display: none !important; 
    } 


    input[type="image"][title="In Datenfeed exportieren"], input[type="image"][title="Exporter vers un flux de données"], input[type="image"][title="Esporta in feed di dati"], input[type="image"][title="Export to Data Feed"] 
    { 
     display: none !important; 
    } 
    */ 
    input[type="image"][src$="Microsoft.Reporting.WebForms.Icons.Print.gif"] { 
     display: none !important; 
    } 

    input[type="image"][src$="Microsoft.Reporting.WebForms.Icons.AtomDataFeed.gif"] { 
     display: none !important; 
    } 

Pero no se puede en realidad eliminar al menos el icono de impresión en Internet-explorer añadiendo ShowPrintButton="false" al control ReportViewer:

<RS:ReportViewerHost ID="ReportViewerControl" ShowPrintButton="false" runat="server" /> 

Otra idea: en SSRS 2012 & 2014 (y posiblemente 2008R2), también puede agregar su método javaScript de fijación de SSRS en add_pageLoaded de ScriptManager. De esta manera:

Sys.WebForms.PageRequestManager.getInstance().add_pageLoaded(function() { fixReportingServices('rpt-container'); }); 

entonces no tiene que escuchar a los eventos de cambio de página, lo que acelera las cosas, porque carga sólo se llama una vez al final de cada actualización.

ADVERTENCIA

Porque en Internet, es decir no por defecto a la vista de compatibilidad,

<meta http-equiv="X-UA-Compatible" content="IE=5"> 

no le ayudará con ciertos temas, ya sea (texto Rotate270/texto vertical).

Incluso en IE, solo funciona correctamente cuando estás en la intranet, porque solo entonces usa la "vista de compatibilidad". Mientras que la metaetiqueta configura el navegador en IE5-Quirksmode, no habilita la "vista de compatibilidad", por lo que no es el verdadero modo raro ...

+0

tl; versión dr - No es muy compatible. Respuesta muy completa sin embargo. – akousmata

+1

Además, consulte: http://www.experts-exchange.com/Database/MS-SQL-Server/MS-SQL_Reporting/Q_28124478.html –

+0

+1 para toda esa información. (¡viva el modo IE5-Quirks, no!) –