none
Mostrar barra de progreso mientras se abre el reportviewer rdlc en c# RRS feed

  • Pregunta

  • Buenas tardes, escribo en esta oportunidad porque desde un formulario llamado a otro que contiene un reportviewer rdlc y lo muestro de esta manera:

    FrmOficioExpediente frm = new FrmOficioExpediente();
    frm.ShowDialog();

    Estuve utilizando un backgroundworker esta forma:

    private void btnOficio_Click(object sender, EventArgs e)
    {
       this.backgroundWorker1.RunWorkerAsync();
    }

    private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
            {
                Variable_Globales.NroExpediente = this.txtCodigo.Text.Trim().ToUpper(); 
            }
            
            private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
            {
                this.MensajeOk("Completado");
                FrmOficioExpediente frm = new FrmOficioExpediente();
                frm.ShowDialog();
            }
    

    pero me tarda en abrir el formulario que contiene el reportviewer, como puedo hacer para que mientras este en proceso se muestre una barra de progreso pero no se quite hasta que aparezca el formulario.

    martes, 13 de noviembre de 2018 20:25

Respuestas

  • hola

    Pero el backgroundWorker no se usa para abrir forms, se usa para por ejemplo realizar algun proceso de archivo u obtener datos de una db, etc

    no para abrir formularios

    si el reporte tarda me temo que no hay mucho que hacer, quizas debas ver de o conectar el reporte directo a la db, en su lugar usar ado.net para obtener un dataset tipado que luego asignes al reportSource del reporte

    de esta forma puedes separar la obtencion de datos de la visualizacion del reporte, entonces si en el DoWork podrias obtener los datos y en el RunWorkerCompleted lanzar el form con el reporte usando los datos que obtuviste

    sino puedes separar los procesos no se puede hacer nada

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 13 de noviembre de 2018 21:13

Todas las respuestas

  • hola

    Pero el backgroundWorker no se usa para abrir forms, se usa para por ejemplo realizar algun proceso de archivo u obtener datos de una db, etc

    no para abrir formularios

    si el reporte tarda me temo que no hay mucho que hacer, quizas debas ver de o conectar el reporte directo a la db, en su lugar usar ado.net para obtener un dataset tipado que luego asignes al reportSource del reporte

    de esta forma puedes separar la obtencion de datos de la visualizacion del reporte, entonces si en el DoWork podrias obtener los datos y en el RunWorkerCompleted lanzar el form con el reporte usando los datos que obtuviste

    sino puedes separar los procesos no se puede hacer nada

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 13 de noviembre de 2018 21:13
  • Ah ok, pense que podia, lo estoy desarrollando en 3 capas (Datos, Negocio, Presentación) y tengo la busqueda de los datos en el load en donde se carga el reportviewer, gracias
    miércoles, 14 de noviembre de 2018 13:25