Compartir a través de


ReportViewer (Clase)

Proporciona propiedades, métodos y eventos para la programación del lado cliente del control de servidor web ReportViewer.

El control de servidor web ReportViewer crea una instancia de esta clase en el explorador del lado cliente como identificador para permitirle interactuar mediante programación con el control del lado cliente. Use esta instancia para personalizar el comportamiento del control del lado cliente con un número mínimo de postbacks al servidor.

Espacio de nombres: Microsoft.Reporting.WebFormsClient

Hereda: Sys.Component

 var v = $find(viewerId);

Miembros

Name

Descripción

Método exportReport

Exporta el informe en el formato especificado.

Método find

Busca una cadena en el informe actual del área de informe.

findNext (Método)

Encuentra el siguiente resultado de la búsqueda en el informe.

Método invokePrintDialog

Inicia el cuadro de diálogo Imprimir.

recalculateLayout (Método)

Vuelve a calcular el diseño de ReportViewer.

Método refreshReport

Actualiza el informe.

documentMapCollapsed (Propiedad)

Obtiene o establece un valor Boolean que indica si está contraído el mapa del documento.

isLoading (Propiedad)

Obtiene un valor Boolean que indica si la página web está realizando un postback o el control del lado cliente está cargando contenido.

Propiedad promptAreaCollapsed

Obtiene o establece un valor Boolean que indica si el área de mensajes de parámetros está contraída.

reportAreaContentType (Propiedad)

Obtiene un valor de la enumeración Microsoft.Reporting.WebFormsClient.ReportAreaContent que indica el tipo de contenido actual del área de informe.

reportAreaScrollPosition (Propiedad)

Obtiene o establece un objeto Sys.UI.Point que representa la posición de desplazamiento del área de informe.

zoomLevel (Propiedad)

Obtiene o establece un valor de tipo string que representa el nivel de zoom actual.

Comentarios

Las instancias de la clase ReportViewer no se crean directamente. En su lugar, se obtiene acceso a una instancia de ReportViewer. La instancia de ReportViewer se crea cada vez que el control de servidor web se representa en el explorador del lado cliente, donde permanecerá mientras la página web se encuentre abierta en el explorador y el control de servidor web no se vuelva a representar. Si el control de servidor web ReportViewer se sitúa dentro de un control UpdatePanel, se eliminará la instancia de ReportViewer y se volverá a crear cada vez que el panel de actualización se actualice en el explorador del lado cliente mediante una actualización de página parcial.

Para obtener acceso a la instancia de ReportViewer, use el método Sys.Application.findComponent o el acceso directo $find con el identificador de la instancia de ReportViewer. Por ejemplo, el siguiente fragmento de código de página ASP.NET registra el archivo JavaScript, ClientCode.js, en el control ScriptManager. A continuación, el archivo ClientCode.js define un método rezoom que utiliza el método $find para obtener acceso a la instancia de ReportViewer mediante el identificador del lado cliente del control de servidor web ReportViewer. La adición de referencias de script al control ScriptManager garantiza que los scripts registrados se ejecutarán después de que la biblioteca de Microsoft AJAX se haya cargado.

<asp:ScriptManager ID="ScriptManager1" runat="server">
    <Scripts>
        <asp:ScriptReference Path="ClientCode.js" />
    </Scripts>
</asp:ScriptManager>
<rsweb:ReportViewer ID="ReportViewer1" runat="server" ProcessingMode="Remote">
    <ServerReport ReportPath="/AdventureWorks 2008 Sample Reports/Company Sales 2008" 
        ReportServerUrl="http://<servername>/reportserver" />
</rsweb:ReportViewer>
<asp:TextBox ID="TextBox1" runat="server" onchange="rezoom(value)"></asp:TextBox>

A continuación, se muestra el código de ClientCode.js. En la mayoría de los casos, el valor de la variable viewerID es el identificador del control de servidor web en la página ASP.NET. En el fragmento de código de ASP.NET, este es "ReportViewer1". Use la propiedad ClientID del control de servidor web para obtener el identificador del lado cliente de forma fiable.

function rezoom(level) {
    var viewer = $find("ReportViewer1");
    if (!viewer.get_isLoading() && viewer.get_zoomLevel() != level)
        viewer.set_zoomLevel(level);
}

Excepciones iniciadas por la instancia de ReportViewer

Cuando la página web está realizando un postback o el control del lado cliente está cargando contenido, si se tiene acceso a los métodos o propiedades de la instancia de ReportViewer, se producirá una excepción con el mensaje: "Se están actualizando el informe o la página. Espere a que se complete la acción actual". La propiedad isLoading se puede usar para comprobar si el informe o la página se está actualizando y si puede tener acceso a los métodos y propiedades. Esta propiedad no inicia ninguna excepción.

Cuando la página web o el control del lado cliente no realiza ningún postback, existe un conjunto de métodos que requieren que se cargue un informe. Si no hay ningún informe cargado, al invocar estos métodos se producirá una excepción con el mensaje: "La operación no se puede realizar porque no hay ningún informe cargado". Estos métodos son los siguientes. Utilice la propiedad reportAreaContentType para comprobar si el área de informe contiene una página de informe antes de utilizar estos métodos.

Controlar los eventos de cambio de propiedad

Si quiere recibir una notificación cuando se cambie una propiedad, registre un controlador de eventos con el evento Sys.Component.propertyChanged. Este es un evento de la clase base de la instancia de ReportViewer. Por ejemplo, el código siguiente registra un evento que exige una restricción en el valor de la propiedad zoomLevel. Puede agregar una referencia de script al siguiente código JavaScript del control ScriptManager.

Sys.Application.add_load(function () {
    $find(viewerID).add_propertyChanged(viewerPropertyChanged);
});

function viewerPropertyChanged(sender, e) {
    if (e.get_propertyName() == "zoomLevel") {
        var viewer = $find(viewerID);
        if (!viewer.get_isLoading() && viewer.get_zoomLevel() < 20) {
            viewer.set_zoomLevel(20);
            alert("Reset zoomLevel to 20.");
        }
    }
}

Los cambios en las propiedades que se produzcan antes del método add_propertyChanged no invocarán el controlador de eventos. Asegúrese de que sitúa el método add_propertyChanged correctamente para que el evento se controle según lo esperado. Para la mayoría de los escenarios, puede registrar con propertyChanged dentro de un controlador de eventos para el evento Sys.Application.load, como en el ejemplo anterior. Sin embargo, dado que el control del lado cliente también ejecuta código del evento load, su controlador add_load podría cambiar la propiedad que desea usar antes de que se ejecute su controlador add_load, dependiendo del orden en el que el marco de trabajo del lado cliente AJAX ejecute los controladores add_load. Para asegurarse de que se controlarán todos cambios en las propiedades, puede registrar con propertyChanged en un controlador de eventos para el evento Sys.Application.init.

Vea también

Conceptos

Microsoft.Reporting.WebFormsClient

Otros recursos

AJAX Client Life-Cycle Events

Sys.Application.load Event