Monday, April 21, 2008

Cómo pasar valores De Un listbox a Un datagridview

Bueno, lo prometido es deuda... aquí les va el código en VB.NET (app window) que les prometí...

Si alguna vez quisieron hacer lo que ven a continuación en esta imágen:




Tienen diferentes controles (ya sea listbox, textbox, combobox, etc) en los cuales ingresan datos y con un evento, puede ser el evento de botón, como ven el botoncito de >, quieren llevar esos datos ingresado a las celdas de un datagridview...

Ok, primero deben hacer sus validaciones, eso de qué campos son requeridos, los tipos de datos permitidos, etc... eso no lo vamos a contemplar aquí.

Como segundo paso, deben crearse de forma global un DataTable, un DataRow y un DataSet.

Dim dtHorario As DataTable = New DataTable
Dim dr As DataRow
Dim dsHorario As New DataSet

En el método load del formulario, deben cargar el dataset. Deben añadir las columnas al DataTable que crearon. Y cargarlo al DataSet que crearon también.
Public Sub cargaDataSet()
dtHorario.Columns.Add(New DataColumn("Horario", GetType(String)))
dtHorario.Columns.Add(New DataColumn("Día Inicial", GetType(Integer)))
dtHorario.Columns.Add(New DataColumn("Día Final", GetType(Integer)))
dsHorario.Tables.Add(dtHorario)
End Sub
Ok, ahora a ese DataTable que crearon, deben cargalos con sus datarows respectivos que son los valores que extraen de los controles

Como lo que yo estoy cargando, es un horario... asi se llama mi función, vean que devuelve un DataSet:
Public Function CargarHorario() As DataSet
Dim intDiaInicial As Integer = CInt(Me.txtphoDiaInicial.Text)
Dim intDiaFinal As Integer = CInt(Me.txtphoDiaFinal.Text)
Dim strHorario = Me.lstHorarios.SelectedValue
Try
Try
dr = dtHorario.NewRow
dr(0) = strHorario
dr(1) = intDiaInicial
dr(2) = intDiaFinal
dtHorario.Rows.Add(dr)
Catch ex As Exception
Throw ex
End Try
Return dsHorario
Catch ex As Exception
Throw ex
End Try
End Function


Y bueno, a esa función la llaman desde un método o subrutina en el que únicamente tienen que crearse un DataView y otro DataSet que lo cargan utilizando la función que acaban de crear y de ahí hace el famoso DataSource

Public Sub TraerValoresToGrid()
Dim dsHorarios As DataSet
Dim dvHorarios As DataView
dsHorarios = Me.CargarHorario
dvHorarios = dsHorarios.Tables(0).DefaultView
grdDatosHorario.DataSource = dvHorarios
End Sub


Y bueno, a esta subrutina la llaman desde el botoncito > que añade los valores al gridview


P.D.(I Hate You)!!!

2 comments:

  1. y como se hace al reves??? ke le de doble clic a un elemento del datagrid y se pasen al list box todos los campos acomodados en columnas....

    ReplyDelete
  2. amigo estoy programando con vb en asp.net y en el metodo cargarDataset()
    al momento de colocar esta linea me genera error dsHorario.Tables.Add(dtHorario)

    ReplyDelete