Foros del Web » Programación para mayores de 30 ;) » .NET »

Progressbar en un datagridview

Estas en el tema de Progressbar en un datagridview en el foro de .NET en Foros del Web. HOLA NECESITO QUE ME AYUDEN, ESTOY INTENTANDO PROGRAMAR Y NECESITO PORCENTAJES DE AVANCES EN UN DATAGRIDVIEW POR EJEMPLO DIGAMOS: TAREA1 AVANZADO SELECCION DE MATERIALES //////10%/////// ...
  #1 (permalink)  
Antiguo 22/11/2009, 05:16
 
Fecha de Ingreso: abril-2008
Mensajes: 6
Antigüedad: 16 años
Puntos: 0
Busqueda Progressbar en un datagridview

HOLA NECESITO QUE ME AYUDEN, ESTOY INTENTANDO PROGRAMAR Y NECESITO PORCENTAJES DE AVANCES EN UN DATAGRIDVIEW POR EJEMPLO DIGAMOS:

TAREA1 AVANZADO
SELECCION DE MATERIALES //////10%///////
DETALLAR COSTOS /////45%/////////////////////////

ESTO EN EL DATAGRIDVIEW, OJALA PUEDAN AYUDARME ESTOY PROGRAMANDO EN VISUAL BASIC .NET
  #2 (permalink)  
Antiguo 22/11/2009, 10:17
Avatar de jaullo  
Fecha de Ingreso: abril-2009
Mensajes: 994
Antigüedad: 15 años
Puntos: 30
Respuesta: Progressbar en un datagridview

Para esto debes usar el background worker.... asi podras lanzar el porcentaje de avance mientras el grid se llena.

Por ejemplo:

Agregas un progressbar a tu for

agregas un BackGroundWorker

Luego pasas a vista código, seleccionas tu background worker y le colocas el método DoWork y le pones el siguiente codigo

Private Sub BackgroundWorker1_DoWork(ByVal sender As Object, ByVal e As System.ComponentModel.DoWorkEventArgs) Handles BackgroundWorker1.DoWork
Try
Dim strCn As String = "Integrated Security=SSPI;Persist Security Info=false;Initial Catalog=tubd;Data Source=(local)"
Dim cnSQL As New SqlClient.SqlConnection(strCn)

cnSQL.Open()

Me.BackgroundWorker1.ReportProgress(50)

System.Threading.Thread.Sleep(2000) ' Para simular tiempo de espera

Dim adp As New SqlClient.SqlDataAdapter("Select * from tabla", cnSQL)

Dim dsTemp As New DataSet

adp.Fill(dsTemp, "nombre_tabla")

Me.BackgroundWorker1.ReportProgress(100)

e.Result = dsTemp

Me.dgdDetalle.Columns("columna").ReadOnly = True

Catch ex As Exception

End Try


End Sub

Luego buscas tu bakgrounworker y le pones el metodo ProgressChanges, quedaria algo asi:

Private Sub BackgroundWorker1_ProgressChanged(ByVal sender As Object, ByVal e As System.ComponentModel.ProgressChangedEventArgs) Handles BackgroundWorker1.ProgressChanged

Me.progressbar.Value = e.ProgressPercentage

End Sub


Nuevamente buscas tu backgroundworker y le pones el metodo RunWorkerCompleted, quedando algo como lo siguiente:

Private Sub BackgroundWorker1_RunWorkerCompleted(ByVal sender As Object, ByVal e As System.ComponentModel.RunWorkerCompletedEventArgs) Handles BackgroundWorker1.RunWorkerCompleted
Me.dgdDetalle.DataSource = CType(e.Result, DataSet)

Me.dgdDetalle.DataMember = "tu_tabla"

' MsgBox("Metodo Terminado")


End Sub

Y por ultimo en el boton de busqueda o cualquier otro que uses, pones lo siguiente para activar tu backgroundworker

BackgroundWorker1.WorkerReportsProgress = True
Me.BackgroundWorker1.RunWorkerAsync()

Espero te sirva.

Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:09.