none
¿Como hago para que la ventana que contiene un reportviewer no tarde en abrir? RRS feed

  • Pregunta

  • Buenos días, escribo en esta oportunidad porque tengo un formulario donde se debe ingresar unos datos en textbox y combobox y luego que se guardan mostrar un reportviewer pero el problema que presento es que para que se muestre el formulario del reportviewer tarda mucho, como se puede evitar eso? este es el código que utilizo cuando le doy en el boton de guardar, claro primero ejecuto un procedimiento que me tiene que devolver un entero:

    if (Convert.ToInt32(rpta) != 0)
    {
         DataTable ultimo = NRequerimiento.BuscarIdRequerimiento(Convert.ToInt32(rpta));
         this.MensajeOk("Se registro la solicitud " + ultimo.Rows[0][0].ToString() + " correctamente.");
         Clipboard.SetText(ultimo.Rows[0][0].ToString());                                
         Variable_Globales.NroExpediente = ultimo.Rows[0][0].ToString();
          FrmOficioExpediente frm = new FrmOficioExpediente();
          frm.ShowDialog();
          this.Limpiar();
    
    }
     else
    {
       this.MensajeError(rpta);
    }

    y en el load del reporte tengo esto, que es para visualizar el reporte:

    try
                {
                    this.txtNExpediente.Text = Variable_Globales.Nro;
                    DataTable datos = NRequerimiento.BuscarRequerimiento(this.txtNExpediente.Text.Trim().ToUpper());
    
                    if (datos.Rows.Count > 0)
                    {
                        this.reportViewer1.Visible = true;
                        this.reportViewer1.ZoomMode = ZoomMode.PageWidth;
    
                        ReportParameter para = new ReportParameter("para", this.txtNExpediente.Text.Trim().ToUpper());
                        this.reportViewer1.LocalReport.SetParameters(new ReportParameter[] { para });
    
                        ReportDataSource rds1 = new ReportDataSource("DataSet1", datos);
                        this.reportViewer1.LocalReport.DataSources.Clear();
                        this.reportViewer1.LocalReport.DataSources.Add(rds1);
                        this.reportViewer1.LocalReport.Refresh();
                        this.reportViewer1.RefreshReport();
                    }
                    else
                    {
                        this.MensajeError("No hay datos disponibles");
                    }
    
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message + ex.StackTrace);
                }
    que me recomienda para que no tarde en mostrarse el formulario del reporte y se visualice rápido?
    miércoles, 7 de noviembre de 2018 11:56

Todas las respuestas

  • hola

    >>pero el problema que presento es que para que se muestre el formulario del reportviewer tarda mucho

    puede depender de muchos factores, estas asignando un .rdlc ? o sea es un reporte local o usas el servicio de reporting de sql server

    puedes validar si la generarcion del datatable no demora?

    porque usas dos veces estas lineas

    this.reportViewer1.LocalReport.Refresh();
    this.reportViewer1.RefreshReport();

    porque dos refresh, no alcanza con uno ?

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    miércoles, 7 de noviembre de 2018 12:37
  • Saludos, probé quitando algunas de las dos lineas pero me di cuenta que esta 
    this.reportViewer1.LocalReport.Refresh();
    No me hace nada, en cambio con la otra si me lo visualiza pero tarda demasiado y no sería bueno, que podría hacer?
    jueves, 8 de noviembre de 2018 16:02