none
problema al obtener los datos de un datagridview

    Question

  • Hola, quizás la pregunta que voy a hacer sobre los datagridview es algo repetitiva, puesto que he leído varios post sobre este tema o muy parecido, pero no consigo ajustarlos a mis necesidades.

    Tengo un formulario con varios textbox y un botón para buscar matrículas, cuando le pulso se me abre otro formulario con un datagridview y un botón y un textbox para introducir la matrícula a buscar en el datagridview sobre los datos que previamente se han cargado en el evento load.

    El control llamado VEHICdatagridview está enlazado de forma tipada por medio de la propiedad DataSource al que le asigno el valor VEHICBindingSource.

    La búsqueda me la realiza correctamente, el problema es que cuando utilizo el evento CellDoubleClick no me rellena los datos de los textbox del primer formulario.

    Este es el código del evento:

    Private Sub VEHICDataGridView_CellDoubleClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellEventArgs) Handles VEHICDataGridView.CellDoubleClick

    valMAT = BaseDatos2DataSet.VEHIC(Me.VEHICBindingSource.Position).Matricula

    My.Forms.FormExpVehiculos.TxtMatriculaBusca.Text = valMAT_Veh_Aband

    Me.Dispose()

    End Sub

     

     

    En el evento Load del formulario utilizo estas líneas:

    Private Sub FormBusca_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

    Me.VEHICTableAdapter.Fill(Me.BaseDatos2DataSet.VEHIC)

    Me.VEHICTableAdapter.FillByMatricula(Me.BaseDatos2DataSet.VEHIC, "%" & 

    End Sub

     

    Y lo que pretendo es que me rellene todos los textbox tipados del primer formulario con los datos correspondientes a la fila de la matrícula elegida.

    Creo que éste código me funcionaría si los textbox del primer formulario los tuviera enlazados directamente con la tabla VEHIC pero como están enlazados con una relación pues no consigo que los cargue desde una tabla a una tabla en una relación, no se si me explico.

    El BindingSource de los controles del formulario primero los tengo de éste modo:

    DataBinding (text) = RelaciónVEHIC_BSource - (y la columna de cada uno)

    El control RelaciónVEHIC_BSource lo tengo con estas propiedades:

    DataSource: VEHIC_ABANBindingSource

    DataMember: VEHIC_ABAN_VEHIC

     

    ¿Como puedo conseguir que me cargue en dichos controles los datos de la búsqueda de la otra tabla VEHIC en los controles enlazados a otra tabla?

     

    Gracias por vuestra ayuda y paciencia.

    Monday, May 24, 2010 9:08 PM

All replies

  • hola

    es que necesitas tener la instancia del form padre para poder pasarle los valores desde el otro form

    mira este ejemplo

    DataGridView Parte 3 Pasaje de informaci ó n entre grillas en distintos formularios

    como veras del form hijo se pasa la seleccion al padre que realizo la apertura

    igual ojo porque en este caso la grilla del form padre no esta bindeada a datos, si quires hacerlo deberas agregar los datos que vuelve en el dataset que uses para bindear

    [DataGridView] – Pasar Registros entre Grillas

    en el link se explcia la tecnica para agregar registros cuando la grilla esta o no enlazada a datos

    saludos


    Leandro Tuttini

    Blog
    Buenos Aires
    Argentina
    Monday, May 24, 2010 9:43 PM
  • Hola Leandro, gracias por tu ayuda.

    En mi caso es que todos los controles están bindeados, la cuestión es que este método lo estoy usando en otros formularios que tengo y me funciona, pero ahora la diferencia es que busco y encuentro datos en una tabla (VEHICTableadapter), pero me tiene que pasar los datos a unos controles conectados a otra tabla proveniente de una relación, es decir, que la tabla conectada con éstos últimos se encuentra dentro de las tablas que podemos ver en la ventana de orígenes de datos de VS2008.

    He revisado los ejemplos, que ya los tenía de otros caso anteriores y que realmente me ha servido para otras situaciones, pero en este caso no le encuentro la forma de sacarle la información que me sirva para este caso.

    No obstante, si es muy complicado, no hay problema, puedo buscar otros métodos de pasar la información seleccionada en el datagridview hasta los textbox, algo así como: 

    Dim currentRow As DataGridViewRow = dataGridView1.Rows(e.RowIndex)

    Textbox1.Text = currentRow.Cells("nombre de columna").Value

    Aunque tengo que buscar información para obtener el dato correctamente de cada celda seleccionada.

     

    Tuesday, May 25, 2010 9:53 AM
  • HOLA ,

    DALE UN VISTAZO A ESTE LINK , AVER SI CONSIGUE ALGUNA IDEA , DISCULPA YA QUE EL ENLACE ESTA EN C# Y ESTE FORO ESTA EN VB

    http://csharpyalgomas.wordpress.com/2008/08/20/obtener-valores-de-celdas-en-datagridview/

     

    ENMANUEL GRULLARD

    REPUBLICA DOMINICANA

     

    Tuesday, May 25, 2010 6:56 PM
  • Gracias Enmanuel, me viene de perlas.

     

    Estoy seguro que voy a encontrar utilidad a más de una de ellas, en especial las últimas.

     

    He intentado traducir de C# a VB.Net las lineas, con el siguiente resultado:

     

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

            MessageBox.Show(DataGridView1.CurrentCell.Value.ToString())

            'O también de esta otra manera

            MsgBox(DataGridView1.CurrentCell.ColumnIndex, DataGridView1.CurrentCell.RowIndex.Value.ToString)

            'O si quisiéramos obtener el Valor de una Celda en Específico

            '  //indice o nombre de la columa, //indice o nombre del renglon       

            MsgBox(DataGridView1(0, 0).Value.ToString)

        End Sub


     

    Me da un error la siguiente línea: 

    MsgBox(DataGridView1.CurrentCell.ColumnIndex, DataGridView1.CurrentCell.RowIndex.Value.ToString)

     

    ¿Alguien me puede indicar como debería ser la forma correcta de ponerla en VB.Net?

     

    Aquí dejo el código original del enlace aportado por Enmanuel.

     

    Aquí les muestro algunas formas de obtener Valores de las Celdas en un DatagridView.

     

    Esta línea nos permitirá observar el valor que contiene la celda en la que estamos posicionados.

    private void dataGridView1_CellContentClick(object sender,DataGridViewCellEventArgs e)

    {

       MessageBox.Show(dataGridView1.CurrentCell.Value.ToString());

    }

     

    O también de esta otra manera

     private void dataGridView1_CellContentClick(object sender,DataGridViewCellEventArgs e)

    {

       MessageBox.Show(dataGridView1[dataGridView1.CurrentCell.ColumnIndex,          dataGridView1.CurrentCell.RowIndex].Value.ToString());

    }

     

    O si quisiéramos obtener el Valor de una Celda en Específico

    private void dataGridView1_CellContentClick(object sender,DataGridViewCellEventArgs e)

    {

      //indice o nombre de la columa, //indice o nombre del renglon       

       MessageBox.Show(dataGridView1[0,0].Value.ToString());

    }

    Wednesday, May 26, 2010 10:02 PM