none
Obtener el valor de una columna en una fila seleccionada

    Pregunta

  • Hola, tengo el siguiente problema en visual basic 2005

    Necesito obtener el valor de una columna especifica en un datagridview, la fila de la columna la selecciona el usuario en tiempo de ejecucion.

    Alguien puede ayudarme???

    lunes, 30 de octubre de 2006 15:47

Respuestas

  • Con la funcion

    Private Sub DataGridView_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DPDataGridView.CellContentClick

    Var = DataGridView.Rows(e.RowIndex).Cells(n).Value

    End Sub

    mira esta es la funcion que se ejecuta cuando un usuario selecciona un elemento del datagridview y al hacer esa asignacion tomas la celda "n" del renglon que elijas

    jueves, 23 de noviembre de 2006 0:13
  • Hola Favian,

    La respuesta seria.. row.Cells(Col).Value, pero para ampliartela un poquito...

    '
    'Recorrer los valores de una Columna
    Dim Valor As
    String
    Dim Col As Integer = Me.DataGridView1.CurrentCell.ColumnIndex
    For Each row As DataGridViewRow In Me.DataGridView1.Rows
        Valor = row.Cells(Col).Value
    Next

    Saludos,
    Pep Lluis,

    lunes, 30 de octubre de 2006 16:07
    Moderador

Todas las respuestas

  • Hola Favian,

    La respuesta seria.. row.Cells(Col).Value, pero para ampliartela un poquito...

    '
    'Recorrer los valores de una Columna
    Dim Valor As
    String
    Dim Col As Integer = Me.DataGridView1.CurrentCell.ColumnIndex
    For Each row As DataGridViewRow In Me.DataGridView1.Rows
        Valor = row.Cells(Col).Value
    Next

    Saludos,
    Pep Lluis,

    lunes, 30 de octubre de 2006 16:07
    Moderador
  • El control DataGridView tiene limite de filas?

    Si es asi cual es el limite???

    Saludos,

    miércoles, 22 de noviembre de 2006 16:09
  • Con la funcion

    Private Sub DataGridView_CellContentClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles DPDataGridView.CellContentClick

    Var = DataGridView.Rows(e.RowIndex).Cells(n).Value

    End Sub

    mira esta es la funcion que se ejecuta cuando un usuario selecciona un elemento del datagridview y al hacer esa asignacion tomas la celda "n" del renglon que elijas

    jueves, 23 de noviembre de 2006 0:13
  • Segun alguna especificacion de libro :

    "When using Virtual mode you can easily support over 2 million rows"

    Espero que esto responda a tu pergunta.
    Pep Lluis,

    jueves, 23 de noviembre de 2006 8:36
    Moderador
  • Mira Tio esto es muy facil:

    Primero declaras una variable del tipo que que quieras

    o si no utilizas un control especificado.

    Luego a la variable le das el valor de la columna como se muestra en la linea de codigo:

    *******************************************************************************************************

    Dim Variable As Integer = DataGridView1.Item(0, DataGridView1.CurrentRow.Index).Value

    *******************************************************************************************************

    0 : Me Indica el Indice de la columna.

    DataGridView1.CurrentRow.Index : Me indica la fila seleccionada

    Value : El valor de la celda.

    Como en una linea de codigo capturas tu valor de la celda seleccionada

     

    • Propuesto como respuesta Martin Bergagno martes, 18 de enero de 2011 12:31
    martes, 03 de abril de 2007 15:06
  • Muy buena respuesta, despues de varios intentos lo logré con tu ayuda.

    Yo estaba acostumbrado a VB.net 2003 el codigo para éste sería:

     

    __________________________________________________________

    ValorDeLaCelda = DataGrid.Item(DataGrid.CurrentRowIndex, 0)

    __________________________________________________________

     

    donde:

     

    DataGrid.CurrentRowIndex  es la fila que seleccionamos actualmente y

    0 es la columna

     

     

    bueno lo he publicado por si alguien programa en VB 2003. Saludos!

     

     

    • Propuesto como respuesta Marco Vega lunes, 09 de noviembre de 2009 21:52
    domingo, 29 de julio de 2007 4:47
  • asi funciona

    Dim
     Variable As Integer =Dim Variable As Integer = DataGridView1.Item(0, DataGridView1.CurrentRow.Index).Value.Item(0, DataGridView1.CurrentRow.Index).Value


    0 es el numero de la columna...y obvio  DataGridView1 el nombre de la tabla , para pasarlo a estring poner al final .tostring y listo
    lunes, 09 de noviembre de 2009 21:54
  • Mira Tio esto es muy facil:

    Primero declaras una variable del tipo que que quieras

    o si no utilizas un control especificado.

    Luego a la variable le das el valor de la columna como se muestra en la linea de codigo:

    *******************************************************************************************************

    Dim Variable As Integer = DataGridView1.Item(0, DataGridView1.CurrentRow.Index).Value

    *******************************************************************************************************

    0 : Me Indica el Indice de la columna.

    DataGridView1.CurrentRow.Index : Me indica la fila seleccionada

    Value : El valor de la celda.

    Como en una linea de codigo capturas tu valor de la celda seleccionada

     

    'Cdo realizo un delete
    'Necesito OBTENER EL VALOR DE UNA CELDA, y hago lo siguiente
    
     Dim codArticulo As Long
    codArticulo = Convert.ToInt64(DgArticulos("CodArticulo", DgArticulos.SelectedRows(0).Index).Value)
    
    'Luego actualizo mi DataGridView(DgArticulos)
    'pasando una lista1 a travez de las capas (con parametros vacios)
    
    'Nota: DgArticulos esta enlazado a la lista1
    'Hasta aca todo bien.!
    '----------------------------------------
    'Pero ahora, los elementos de DgArticulos, los voy agregando a dgvLineaCompra
    'Para OBTENER EL VALOR DE UNA CELDA tuve que realizar las siguientes modificaciones
    
    Dim codArticulo As Long
    codArticulo = Convert.ToInt64(dgvLineaCompra.Item("CodArticulo", dgvLineaCompra.CurrentRow.Index).Value)
    
    'Nota: dgvLineaCompra esta enlazado a la lista2
    'Hasta aca todo bien tb.!
    
    '----------------------------------------
    '----------------------------------------
    
    'Mi problema surge cdo quiero Eliminar un elemento de la lista2.
    'Aca fué cdo no me funcionaba mi antigua forma de obtener el valor de una celda y tuve que utilizar la nueva forma
    
    'Nota: dgvLineaCompra esta enlazado a la lista2
    
    'para eliminar items en una lista
    'http://ltuttini.blogspot.com/search?q=removeat
    
     Sub DeleteItem()
    
        Dim result As DialogResult
        result = MessageBox.Show("Esta seguro que desea Eliminar Articulo", "Eliminar Articulo", MessageBoxButtons.OKCancel, MessageBoxIcon.Question)
    
        If DgArticulos.SelectedRows.Count > 0 And result = Windows.Forms.DialogResult.OK Then
          Dim codArticulo As Long
          'http://social.msdn.microsoft.com/Forums/es-ES/vbes/thread/2ffd9e26-4cdb-4ffc-bf92-5503d6124783/
          'codArticulo = Convert.ToInt64(dgvLineaCompra("CodArticulo", dgvLineaCompra.SelectedRows(0).Index).Value)
          codArticulo = Convert.ToInt64(dgvLineaCompra.Item("CodArticulo", dgvLineaCompra.CurrentRow.Index).Value)
    
          Dim listaAuxiliar As New List(Of InvoiceLineEntity)
    
          For Each item As InvoiceLineEntity In Newlist
            If item.CodArticulo = codArticulo Then
              listaAuxiliar.Add(item)
            End If
          Next
    
          For Each item As InvoiceLineEntity In listaAuxiliar
            Newlist.Remove(item)
            dgvLineaCompra.DataSource = Newlist
          Next
          
        End If
    
      End Sub
    
    'El error que me tira al borrar un item es el siguiente
    'System.IndexOutOfRangeException: Index 2 does not have a value.
    
    'Perdon por ser tan extenso, espero haber sido claro.
    
    'Saludos
    'Martin

    martes, 18 de enero de 2011 13:43
  • 'Lo solucione agregando
    'dgvLineaCompra.DataSource = Nothing
    
    For Each item As InvoiceLineEntity In listaAuxiliar
      Newlist.Remove(item)
      dgvLineaCompra.DataSource = Nothing
      dgvLineaCompra.DataSource = Newlist
    Next
    
    '---------------------------------------------------
    'El problema esta acá
    
    For Each item As InvoiceLineEntity In Newlist
      If item.CodArticulo = codArticulo Then
        listaAuxiliar.Add(item)
      End If
    Next
    
    'ME BORRA TODOS LOS ELEMENTOS QUE TIENEN EL MISMO CODIGO.
    'YO SOLO QUIERO QUE ME BORRE EL ITEM SELECCIONADO.

    martes, 18 de enero de 2011 14:11
  • 'Lo solucione agregando
    'Exit For
    
    For Each item As InvoiceLineEntity In Newlist
    	If item.CodArticulo = codArticulo Then
    		listaAuxiliar.Add(item)
    		Exit For
    	End If
    Next
    
    'Saludos
    'Martin

    martes, 18 de enero de 2011 14:58
  • 'Hasta ahora unicamente me borraba la primera ocurrencia, PERO NO ERA LO OPTIMO
    
    'La solucion es:
    
    'metodoAdd
    'En el metodo en el que agrego elementos a dgvLineaCompra
    'AGREGO UN CONTADOR A LA LISTA y lo incremento cada vez que agrego un elemento
    
    '-----------------------------------------
    'metodoDelete
    Dim contador As Integer
    contador = Convert.ToInt32(dgvLineaCompra.Item("Contador", dgvLineaCompra.CurrentRow.Index).Value)
    
    For Each item As InvoiceLineEntity In Newlist
    	If item.Contador = contador Then
    		listaAuxiliar.Add(item)
    	End If
    Next
    
    '-----------------------------------------
    'Ahora si borra el elemento seleccionado. Ya que Ahora si tengo una propiedad UNICA en la lista
    
    'Saludos
    'Martin
    
    martes, 18 de enero de 2011 23:47
  • Señores, yo tengo una duda.

    Si le permito al usuario que pueda escoger varas filas al mismo tiempo usan la tecla shift y esas celdas estan salteadas a gusto del usuario como hago para obtener por ejemplo el valor de cada fila seleccionada. Fijo es con un ciclo pero existe comando para que se entienda que una fila esta o no seleccionada.

    Saludos.

    Gracias.


    Soma
    jueves, 26 de mayo de 2011 23:31
  • Hola:
    Prueba con
       For Each loFila As DataGridViewRow In Me.DataGridView1.SelectedRows

    El valor de una celda es:
       loFila.Cells("NOMBRE_CAMPO").Value

    Un saludo desde Bilbo
    Carlos

    viernes, 27 de mayo de 2011 8:19
  • Ok. Lo que realice fue un ciclo que recorar las filas del datagridview y dentro del ciclo realice un IF Selected=True entre y busque el valor si Else siga recorieendo el datagrid hasta encontrar el siguiente seleccionado.

    Gracias.


    Soma
    • Propuesto como respuesta hendaviher viernes, 30 de septiembre de 2011 2:02
    • Votado como útil hendaviher viernes, 30 de septiembre de 2011 2:02
    viernes, 27 de mayo de 2011 13:15
  • hola buenas tardes a todos no se si alguien me pueda ayudar tengo un grid de devexpress

    dxwgv

     

    :

    ASPxGridView

     

     

    y no maneja el evento selectindexchange() quisiera que al seleccionar un row de mi grid tomara ese index del rox seleccionarla para despues manipular las columnas de ese row y llenar un formulario en base a esa row me gustaria que me ayudaran a obtener ese index al dar click en un row x gracias mi correo es mario__020990@hotmail.com

     

    viernes, 15 de julio de 2011 18:22
  • hola, yo tambien estoy trabajando con un DataDridView, lo cargo con la propiedad DataSource y lo que hago para obtener el valor de la celda seleccionada es esto y me funciona perfecto:

            If dgv.RowCount <> 0 Then
                Oper = "Modificar"
                If Not (dgv.CurrentRow Is Nothing) Then
                    'codigo
                Else
                    MsgBox("Debe Seleccionar una Fila para poder Modificar", MsgBoxStyle.Information, "Seleccionar Fila")
                End If
            End If
    


    primero pregunto si por lo menos hay una fila con <> 0

    luego pregunto si la fila seleccionada tiene un valor con Not (dgv.CurrentRow Is Nothing), si el if es verdadero hago lo que tengo hacer

    sino mando un mensaje.

    para obtener el valor de la fila seleccionada lo hago mediante este codigo:

    dgv.Item(0, dgv.CurrentRow.Index).Value
    dgv.Item(1, dgv.CurrentRow.Index).Value
    dgv.Item(2, dgv.CurrentRow.Index).Value
    .
    .
    .

    donde 0,1,2 son las columnas del dgv

    viernes, 30 de septiembre de 2011 2:12
  • hola, yo tambien estoy trabajando con un DataDridView, lo cargo con la propiedad DataSource y lo que hago para obtener el valor de la celda seleccionada es esto y me funciona perfecto:

     

            If dgv.RowCount <> 0 Then
                Oper = "Modificar"
                If Not (dgv.CurrentRow Is Nothing) Then
                    'codigo
                Else
                    MsgBox("Debe Seleccionar una Fila para poder Modificar", MsgBoxStyle.Information, "Seleccionar Fila")
                End If
            End If
    

     


    primero pregunto si por lo menos hay una fila con <> 0

    luego pregunto si la fila seleccionada tiene un valor con Not (dgv.CurrentRow Is Nothing), si el if es verdadero hago lo que tengo hacer

    sino mando un mensaje.

    para obtener el valor de la fila seleccionada lo hago mediante este codigo:

     

    dgv.Item(0, dgv.CurrentRow.Index).Value
    dgv.Item(1, dgv.CurrentRow.Index).Value
    dgv.Item(2, dgv.CurrentRow.Index).Value
    .
    .
    .

     

    donde 0,1,2 son las columnas del dgv

    viernes, 30 de septiembre de 2011 2:13
  • excelente , 
    Keef
    martes, 29 de noviembre de 2011 22:42
  • datagridview1["nombreColumna", datagridview1.CurrentRow.Index].Value.ToString()

    easy.

    • Propuesto como respuesta Neilmas viernes, 01 de junio de 2012 15:49
    viernes, 01 de junio de 2012 15:48
  • excelete gracia PepLuis

    Keef

    martes, 12 de junio de 2012 1:12
  • "

    Mira Tio esto es muy facil:

    Primero declaras una variable del tipo que que quieras

    o si no utilizas un control especificado.

    Luego a la variable le das el valor de la columna como se muestra en la linea de codigo:

    *******************************************************************************************************

    Dim Variable As Integer = DataGridView1.Item(0, DataGridView1.CurrentRow.Index).Value

    *******************************************************************************************************

    0 : Me Indica el Indice de la columna.

    DataGridView1.CurrentRow.Index : Me indica la fila seleccionada

    Value : El valor de la celda.

    Como en una linea de codigo capturas tu valor de la celda seleccionada"

    Esto fue lo que verdaderamente me funcionó, gracias.

    • Editado xXDanyXx jueves, 13 de diciembre de 2012 1:09
    jueves, 13 de diciembre de 2012 1:08