ssrs services rsweb net ejemplo asp asp.net reporting-services reportviewer

asp.net - rsweb - sql reporting services vb net



SSRS ReportViewer Web Control-¿Cómo no mostrar el "WaitControl" en absoluto cuando se procesa como Async? (3)

Encontré una manera de ocultar el mensaje de carga manipulando el DOM con jQuery. Agregar el siguiente script a la página con el reportviewer hizo el truco:

<script type="text/javascript"> $(function () { var waitMsg = $("div[id$=''AsyncWait_Wait'']"); waitMsg.wrap("<div style=''display:none; visibility: hidden''></div>"); }); </script>

Estoy usando el último (2010) ReportViewer Web Control en un proyecto ASP.NET 4. Mi cliente quiere que suprima / oculte el mensaje inicial "Cargando" que se muestra mientras se está recuperando el informe.

Sí ... lo sé ... ¿por qué ocultar información que te dice lo que está pasando? Pero, el cliente quiere lo que quiere el cliente.

Sé que si usa el control del visor de informes con AsyncRendering = False, puede establecer la propiedad WaitControlDisplayAfter en un valor ridículamente largo.

Lamentablemente, necesito tener AsyncRendering = True (mostrando múltiples informes sobre un tipo de cosa del Tablero de instrumentos). Esto (según MSDN http://msdn.microsoft.com/en-us/library/microsoft.reporting.webforms.reportviewer.waitcontroldisplayafter.aspx see Remarks section) significará que el "Wait Control" siempre se mostrará. (Grr-r-rr!)

Entonces, la pregunta es, ¿cómo no mostrar este control usando la representación asincrónica?

(Una pregunta aparte que el cliente me preguntó, fue que querían ver una copia en caché del informe mientras se carga una actualizada, ¿alguien más interesado en esto?)

Gracias, Jaans


Comenzando por la respuesta de Joe Camp, lo siguiente me funciona. Agregué esta entrada al archivo CSS de la aplicación:

div[id$=''AsyncWait_Wait''] { display: none !important; visibility: hidden !important; }

Probado trabajando en IE8, IE9, Chrome 21, FF10, FF15 y Safari (versión 5-ish, iPad3 iOS 5.1.1).


También recomendaré los dos códigos anteriores porque son efectivos y fáciles de usar. Pero si no funcionó, usa este. Agregue la función a continuación y llámela cuando se carguen las páginas.

private void HideLoadImage(Control ReportViewer) { foreach (Control c in ReportViewer.Controls) { if ((string.Compare(c.ID, "AsyncWait") == 0)) { c.Visible = false; } if (c.HasControls()) { HideLoadImage(c); } } }