none
Acomodar datos de columna datagridview en una fila???

    Pregunta

  • Buenas,

    Como puedo acomodar datos de columna DGV en una sola fila??

    Por ejemplo si tengo 3 datos en una columna

    1

    2

    3

    Cómo puedo hacer para pasarlos a un reportviewer separados por comas? 1,2,3

    lunes, 26 de septiembre de 2016 23:57

Respuestas

  • Datos de datagridview a otro formulario,

    Puedes hacer uso del método Join() para concatenar los elementos de un matriz de tipo String (filas de columna):

    Dim valor As String = String.Join(",", DataGridView1.Rows.Cast(Of DataGridViewRow)().
                    [Select](Function(x) x.Cells("NombreColumna").Value).ToArray())
    
    'Resultado: 1, 2, 3



    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    martes, 27 de septiembre de 2016 3:07
  • Hola Datos de datagridview a otro formulario,

    Aunque el hilo ya está cerrado permíteme mostrar una acotación.

    Si no quieres usar Linq, puedes usar el For Each normal pero deberías de tomar las funciones que usa Willams en el ejemplo propuesto, así simplificarías el código.

            Dim datos As New List(Of String)
    
            For Each row As DataGridViewRow In DGV.Rows
                datos.Add(CStr(row.Cells(0).Value))
            Next
    
            TextBox1.Text = String.Join(", ", datos)

    Dónde tendrías el mismo resultado.

    Además si agregas el Option Strict On a tu código, te mostraría dos errores de conversión.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Marcado como respuesta Juan Ortiz T martes, 4 de octubre de 2016 1:29
    sábado, 1 de octubre de 2016 22:46
  • Antes que nada gracias por la respuesta Williams,

    terminé por utilizar un for each, dejo el código que me funcionó para el que lo necesite:

    Bien, sin embargo creo que podrías evitar el contador y quitar el último caracter de coma ',' luego de acumular los valores de fila:

    Dim Valores As String = String.Empty
    For Each row As DataGridViewRow In DGV.Rows
    	Valores += String.Concat(row.Cells(0).Value, ",")
    Next
    TextBox1.Text = Valores.TrimEnd(","c)


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta Juan Ortiz T martes, 4 de octubre de 2016 1:29
    domingo, 2 de octubre de 2016 20:26

Todas las respuestas

  • Datos de datagridview a otro formulario,

    Puedes hacer uso del método Join() para concatenar los elementos de un matriz de tipo String (filas de columna):

    Dim valor As String = String.Join(",", DataGridView1.Rows.Cast(Of DataGridViewRow)().
                    [Select](Function(x) x.Cells("NombreColumna").Value).ToArray())
    
    'Resultado: 1, 2, 3



    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    martes, 27 de septiembre de 2016 3:07
  • Antes que nada gracias por la respuesta Williams,

    terminé por utilizar un for each, dejo el código que me funcionó para el que lo necesite:

            Dim str As String
            Dim cont As Integer = 0
            For Each row As DataGridViewRow In DGV.Rows
                If cont = DGV.Rows.Count - 1 Then
                    str = str + row.Cells(0).Value
                Else
                    str = str + row.Cells(0).Value + ", "
                End If
                cont = cont + 1
            Next
            TextBox.Text = str

    sábado, 1 de octubre de 2016 22:27
  • Hola Datos de datagridview a otro formulario,

    Aunque el hilo ya está cerrado permíteme mostrar una acotación.

    Si no quieres usar Linq, puedes usar el For Each normal pero deberías de tomar las funciones que usa Willams en el ejemplo propuesto, así simplificarías el código.

            Dim datos As New List(Of String)
    
            For Each row As DataGridViewRow In DGV.Rows
                datos.Add(CStr(row.Cells(0).Value))
            Next
    
            TextBox1.Text = String.Join(", ", datos)

    Dónde tendrías el mismo resultado.

    Además si agregas el Option Strict On a tu código, te mostraría dos errores de conversión.

    Saludos.


    JC NaupaCrispín
    Lima - Perú

    La magia no existe, la programación SI

    • Marcado como respuesta Juan Ortiz T martes, 4 de octubre de 2016 1:29
    sábado, 1 de octubre de 2016 22:46
  • Antes que nada gracias por la respuesta Williams,

    terminé por utilizar un for each, dejo el código que me funcionó para el que lo necesite:

    Bien, sin embargo creo que podrías evitar el contador y quitar el último caracter de coma ',' luego de acumular los valores de fila:

    Dim Valores As String = String.Empty
    For Each row As DataGridViewRow In DGV.Rows
    	Valores += String.Concat(row.Cells(0).Value, ",")
    Next
    TextBox1.Text = Valores.TrimEnd(","c)


    Espero que la información proporcionada te haya sido de utilidad, quedo atento a tus comentarios.
    • Marcado como respuesta Juan Ortiz T martes, 4 de octubre de 2016 1:29
    domingo, 2 de octubre de 2016 20:26
  • Muchas gracias Joel, todas las respuestas han funcionado muy bien para lo que necesito. Es bueno aportar conocimientos para personas que estamos en desarrollo en la programación.

    Saludos

    martes, 4 de octubre de 2016 1:31
  • Muchas gracias Williams!

    Espero también a otras personas que tengan problemas con algo, les funcione estos códigos como a mi me han funcionado.

    Saludos

    martes, 4 de octubre de 2016 1:32