none
Datagridview recorrer una columna, detectar un valor y asignarlo a un objeto vb.net RRS feed

  • Pregunta

  • buenas tardes, estoy con un proyecto de partidos de futbol. Tengo jugadores que conforman un partido y partidos que conforman un torneo. En esta Pantalla elijo un Torneo y me muestra todos los partidos de dicho torneo. En cada uno de los datagridview se carga un equipo. Tengo el nombre del jugador y otra columna resultado donde tengo que asignar que jugador hizo goles.

    el tema que  a la hora de grabar los goles a los jugadores no se como hacerlo

    yo tengo listas de jugadores:

     Dim Equipo As List(Of Entidades.Entidades.Equipo)
     Dim Equipo1 As List(Of Jugador) 'contine a los jugadores
     Dim Equipo2 As List(Of Jugador)

    a los jugadores les asigno equipos

       Dim jugB As New MediadorJugador
       Equipo1 = jugB.ListaJugadoresPorEquipo(idEquipo1)
       Equipo2 = jugB.ListaJugadoresPorEquipo(idEquipo2)

    y aca recorro las listas y se las cargo al datagridview

                                        

      For Each obj In Equipo1

                            DGVEquipo1.Rows.Add(obj.Apellido & " " & obj.Nombre)

            Next
            For Each obj In Equipo2

                DGVEquipo2.Rows.Add(obj.Apellido & " " & obj.Nombre)

            Next

    mi pregunta es ¿como hago una vez que recorro la columna re

    sultado y que una vez que encuentra un gol sepa a que jugador pertenece y poder grabarlo ?

    Gestor para grabar el IdJugador, IdPartido, CantidadDeGoles

      Public Sub RegistrarGoles(g As Gol)
            Dim NuevaConexion As New ConfiguracionConexion
            Dim UnaConexion As New Framework.GonzalezNatalia.Persistencia.Conexion(Framework.GonzalezNatalia.Persistencia.Conexion.MotoresDisponibles.SqlServerClient)
            UnaConexion.ConexionIniciar(NuevaConexion)

            UnaConexion.Ejecutar("insert into gol values (@IdJugador, @IdPartido, @CantidadDeGoles)", False, Framework.GonzalezNatalia.Persistencia.IConexion.TipoRetorno.SinResultado, g.IdJugador, g.IdPartido, g.CantidadDeGoles)
            UnaConexion.ConexionFinalizar()

        End Sub

    Desde ya muchas gracias


    viernes, 1 de julio de 2016 0:56

Respuestas

  • Hola Nati-gon,

    [-]¿Cómo hago una vez que recorro la columna resultadoy que una vez que encuentra un gol sepa a que jugador pertenece y poder grabarlo ?

    Lo que puedes hacer es recorrer el DataGridView buscando a los jugadores que han marcado goles, almacenarlos en una Lista<Jugador> y posteriormente haces el registro.

    Algo así :

    [-] Mi Clase

       Public Class Jugador
            Public Property nombre As String
            Public Property goles As Integer
        End Class


    Almaceno en una lista, los jugadores que tienen goles.

     Dim goleadores As List(Of Jugador) = DataGridView1.Rows.Cast(Of DataGridViewRow).
                                          Where(Function(x) CStr(x.Cells("Resultado").Value) <> String.Empty).
                                          Select(Function(x) New Jugador() With
                                             {
                                                 .nombre = CStr(x.Cells("Equipo_1").Value),
                                                 .goles = CInt(x.Cells("Resultado").Value)
                                              }).ToList
    
      For Each gol In goleadores
         'Aqui teniendo la lista, puedes grabar
         MessageBox.Show("El jugador " & gol.nombre & " anotó " &
                                  gol.goles & "gol(es)")
       Next


    Donde : 

    Where : Selecciono las filas donde la columa Resultado no sea vacío.

    - Select : Como retorno una lista de tipo Jugador, creo un nuevo obj del mismo, asignándole el valor a sus propiedades.

    Teniendo la lista cargada, ya puedes usarla para grabarla.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    viernes, 1 de julio de 2016 1:35
  • Nati-gon,

    La tabla [gol] espera por los campos (idJugador, IdPartido y CantidadDeGoles)

    IdPartido, lo obtienes del valor seleccionado actualmente: cboPartido.SelectedValue()

    CantidadDeGoles, lo obtienes de recorrer el objeto de tipo DataGridView

    ¿idJugador?, la idea es que la grilla tenga una columna para cargar el id del jugador, no es necesario que éste visible, podrías ocultarlo, entonces la inserción es simple:

    For Each row As DataGridViewRow In dataGridView1.Rows
            If row IsNot Nothing Then
                    If Not String.IsNullOrEmpty(row.Cells("CantidadDeGoles").Value) Then
                            'row.Cells("idJugador").Value
    			'cboPartido.SelectedValue				    
                            'row.Cells("CantidadDeGoles").Value
    		End If
            End If
    Next


    viernes, 1 de julio de 2016 2:11

Todas las respuestas

  • Hola Nati-gon,

    [-]¿Cómo hago una vez que recorro la columna resultadoy que una vez que encuentra un gol sepa a que jugador pertenece y poder grabarlo ?

    Lo que puedes hacer es recorrer el DataGridView buscando a los jugadores que han marcado goles, almacenarlos en una Lista<Jugador> y posteriormente haces el registro.

    Algo así :

    [-] Mi Clase

       Public Class Jugador
            Public Property nombre As String
            Public Property goles As Integer
        End Class


    Almaceno en una lista, los jugadores que tienen goles.

     Dim goleadores As List(Of Jugador) = DataGridView1.Rows.Cast(Of DataGridViewRow).
                                          Where(Function(x) CStr(x.Cells("Resultado").Value) <> String.Empty).
                                          Select(Function(x) New Jugador() With
                                             {
                                                 .nombre = CStr(x.Cells("Equipo_1").Value),
                                                 .goles = CInt(x.Cells("Resultado").Value)
                                              }).ToList
    
      For Each gol In goleadores
         'Aqui teniendo la lista, puedes grabar
         MessageBox.Show("El jugador " & gol.nombre & " anotó " &
                                  gol.goles & "gol(es)")
       Next


    Donde : 

    Where : Selecciono las filas donde la columa Resultado no sea vacío.

    - Select : Como retorno una lista de tipo Jugador, creo un nuevo obj del mismo, asignándole el valor a sus propiedades.

    Teniendo la lista cargada, ya puedes usarla para grabarla.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    viernes, 1 de julio de 2016 1:35
  • Nati-gon,

    La tabla [gol] espera por los campos (idJugador, IdPartido y CantidadDeGoles)

    IdPartido, lo obtienes del valor seleccionado actualmente: cboPartido.SelectedValue()

    CantidadDeGoles, lo obtienes de recorrer el objeto de tipo DataGridView

    ¿idJugador?, la idea es que la grilla tenga una columna para cargar el id del jugador, no es necesario que éste visible, podrías ocultarlo, entonces la inserción es simple:

    For Each row As DataGridViewRow In dataGridView1.Rows
            If row IsNot Nothing Then
                    If Not String.IsNullOrEmpty(row.Cells("CantidadDeGoles").Value) Then
                            'row.Cells("idJugador").Value
    			'cboPartido.SelectedValue				    
                            'row.Cells("CantidadDeGoles").Value
    		End If
            End If
    Next


    viernes, 1 de julio de 2016 2:11