A veces es necesario actualizar el informe, por ejemplo, si ingresa un nuevo valor de variable o si desea mostrar otro informe en el mismo objeto de informe web. Esto generalmente actualiza la vista completa (estamos hablando de aplicaciones MVC) para el subconjunto. Pero sería mucho mejor si actualizara solo el objeto de informe web.
1. Actualice el informe principal de asp.net después del cambio de variable
https://forum.stimulsoft.com/viewtopic.php?f=13&t=57213

… Todo esto es genial y funciona bien. Lo que no podemos averiguar es cómo actualizar las variables del informe con estos nuevos datos contabilizados y hacer que se vuelva a dibujar el informe. ¿Se hace esto dentro del Controlador y, de ser así, cómo le decimos al visor que actualice (obteniendo así los nuevos datos) o se hace dentro de la Vista y, de ser así, cuál es el método correcto para llamar al objeto Visor? ...
2. ¿Cómo actualizo un visor de informes web después de cambiar el informe?
https://forum.stimulsoft.com/viewtopic.php?f=13&t=58104
¿Cuál es el objeto del informe web? Básicamente, es un contenedor html con un conjunto de scripts que le permiten navegar por las páginas del informe y llamar a funciones útiles, como imprimir y exportar. Y el informe web en sí es un informe exportado a html. La forma más sencilla de actualizar una parte de la página es utilizar iframe. Solo reemplazaremos la fuente del marco y obtendrá una vista parcial o completa del informe por URL. Consideremos un ejemplo en el que la página de la aplicación web muestra una lista desplegable y un marco. Si selecciona un nombre de informe de la lista desplegable, se carga el objeto de informe web con el informe correspondiente.
Para empezar, necesitaremos un método en el controlador que devuelva la vista con el objeto de informe web:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
public IActionResult Update(string SelectedItem) { if (SelectedItem != null) { WebReport webReport = new WebReport(); webReport.Report.Load($"App_Data/{SelectedItem}.frx"); var dataSet = new DataSet(); dataSet.ReadXml("App_Data/nwind.xml"); webReport.Report.RegisterData(dataSet, "NorthWind"); webReport.Width = "1000"; webReport.Height = "1000"; ViewBag.WebReport = webReport; } return PartialView(); } |
El método tiene un parámetro de entrada SelectedItem: el nombre del informe seleccionado.
Para este método, debe crear una vista parcial con una sola línea de código que muestre el objeto de informe web:
@await ViewBag.WebReport.Render ()
La apariencia de la página de inicio del índice se verá de la siguiente manera:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
@{ ViewData["Title"] = "Home Page"; } <div> <select onchange="$('#partialViewDiv').attr('src', '/Home/Update?SelectedItem='+this.value)" id="report"> <option disabled selected>default</option> <option>Lines</option> <option>Simple list</option> <option>Barcode</option> </select> </div> <table> <tr> <td> <iframe id="partialViewDiv" width="1000" height="1000"></iframe> </td> </tr> </table> |
Primero, mostramos una lista desplegable con tres informes disponibles en el formulario. En el controlador de eventos de la lista onclick, asignamos un marco de URL de origen. La URL en sí contiene la ruta al método web con el parámetro. El valor del parámetro se toma del elemento seleccionado en la lista desplegable. A continuación, se muestra el marco.
Ejecutemos la aplicación. Seleccione un informe de la lista desplegable:
Y lo conseguiremos:
Por lo tanto, la actualización de página parcial mediante el uso de un marco es muy fácil de implementar.