Pregunta

Al utilizar el control del visor para mostrar los informes de SQL Reporting Services en la página web (Microsoft.ReportViewer.WebForms), ¿puede mover el botón Ver informe?De forma predeterminada, se encuentra en el lado derecho del informe, lo que significa que debe desplazarse completamente antes de que el botón esté visible.No es un problema para los informes que se ajustan al ancho de la ventana, pero en informes muy amplios esto rápidamente se convierte en un problema.

¿Fue útil?

Solución

Es una especie de truco, pero puedes moverlo en JavaScript.Simplemente vea qué HTML genera ReportViewer y escriba el código JavaScript apropiado para mover el botón.Utilicé JavaScript para ocultar el botón (porque queríamos nuestro propio botón Ver informe).Cualquier código JavaScript que manipule el HTML del ReportViewer generado debe aparecer después del control ReportViewer en la página .aspx.Aquí está mi código para ocultar el botón, para darte una idea de lo que harías:

function getRepViewBtn() {
  return document.getElementsByName("ReportViewer1$ctl00$ctl00")[0];
}

function hideViewReportButton() { // call this where needed
  var btn = getRepViewBtn();
  btn.style.display = 'none';
}

Otros consejos

No, no puede reposicionar el botón Ver informe en el control ReportViewer.

Sin embargo, puede crear su propio control de visualización de informes personalizado.El control estaría compuesto por campos para los parámetros del informe y un botón para generar el informe.Cuando un usuario hace clic en el botón, puede generar el informe en segundo plano.Puede mostrar el informe como PDF, HTML, etc.

La razón por la que el botón está presionado hacia la derecha es que el td de los parámetros tiene ancho="100%".Estoy resolviendo este problema con el siguiente jquery.Simplemente cambia el ancho de los parámetros td a 1.Los navegadores expandirán el ancho por sí solos al ancho del contenido del elemento.Espero que esto ayude.

<script type="text/javascript">
    $(document).ready(function() {
        $("#<%= ReportViewer1.ClientID %> td:first").attr("width", "1");
    });
</script>

Como ayer estaba buscando esta respuesta, pensé en publicar lo que se me ocurrió para resolver nuestro problema.Nuestros informes estaban apareciendo amplios y queríamos que el botón "ver informes" existiera en el lado izquierdo del control para que no fuera necesario desplazarse para llegar al botón.Necesitaba ir a la fuente del archivo renderizado para encontrar los nombres de identificación del botón y la tabla de destino.

Escribí una función simple de cortar y pegar de JavaScript para sacar el botón de su posición original y esencialmente colocarlo en la siguiente fila de la tabla que lo contiene debajo de los selectores de fecha.

function moveButton() {
  document.getElementById('ParameterTable_ctl00_MainContent_MyReports_ctl04').appendChild(document.getElementById('ctl00_MainContent_MyReports_ctl04_ctl00'));
        }

Esta función se llama en el evento de carga del visor de informes.

ScriptManager.RegisterStartupScript(Me, Me.GetType(), "moveButton", "moveButton();", True)

Para ajustar la posición, utilicé el ID de CSS.

#ctl00_MainContent_MyReports_ctl04_ctl00 {
    margin: 0px 0px 0px 50px;
}

Tuve el mismo problema y terminé usando una extensión en la respuesta de Travis Collins;Además de cambiar el ancho de la columna de la tabla, también alineo el botón "Ver informe" a la izquierda para que parezca más cerca del resto de los controles.

    <script type="text/javascript">
  $(document).ready(function() {
     $("#_ctl0_MainContent_reportViewer_fixedTable tr:first td:first-child").attr("width", "1"); 
     $("#_ctl0_MainContent_reportViewer_fixedTable tr:first td:last-child").attr("align", "left");   
  });
</script>

Es posible que deba modificar el selector de JQuery según el nombre del elemento asignado a su control existente.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top