none
Mostrar datos de una tabla mediente LINQ en ComboBox RRS feed

  • Pregunta

  • Que tal, buenas tengo el siguiente codigo para mostrar los datos de la base en un Combo, pero este no me funciona aluien podria decirme si tengo algo mal escrito ?. De antemano muchas gracias

        Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
            'Cargamos los productos que tiene el inventario 
            Dim datos = From p In dataContext.tbPaises Select p.IdPais, p.NombrePais
            Me.cmbPaises.DataSource = datos
            'Indicamos el valor a mostrar
            Me.cmbPaises.DisplayMember = "NombrePais"
            'Indicamos el codigo asociado al valor mostrado
            Me.cmbPaises.ValueMember = "IdPais"
            MostrarGrid()
            ActualizarDatosGrid()
        End Sub

    martes, 5 de enero de 2016 17:04

Todas las respuestas

  • hola

    porque simplemente no usas

     Me.cmbPaises.DataSource = dataContext.tbPaises

    para ver si asignando la entidad lo toma correctamente

    ---

    que codigo usas en MostrarGrid() o ActualizarDatosGrid() los nombres de los metodos son algo raros para invocarlos desde el Load del form

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 5 de enero de 2016 17:40
  • MostrarGrid() es el siguiente :

    Sub MostrarGrid()
            'Genera una consulta LINQ to SQL utilizando el contexto que se creo con el modelo de clases relaionadas con la base de datos, en este caso es la vinculacion al contexto
            'creado y desde ahi podemos realizar la consulta respectiva con SELECT Y CARGARLE LOS DATOS EN LA VARIABLE CONSULTA
            Dim consulta = From c In dataContext.tbProveedores _
                          Select c.IdProveedor, c.Nombre, c.Apellidos, c.Direccion, c.Telefono, _
                          c.tbPaises.NombrePais Order By IdProveedor
    
            'Lo siguiente es para que se generen automaticamente las columnas en el DataGridView1
            DataGridView1.AutoGenerateColumns = False
            'Limpiar todas las columnas del DataGridView1
            DataGridView1.Columns.Clear()
    
            'Genera las columnas del DataGridView1 y asi configurar que aparezcan los campos de columnas donde queremos que aparezcan
            'DataGridView1.Columns.Add(nombreColumna, TextoEncabezado)
            DataGridView1.Columns.Add("ID Proveedor", "IdProveedor")
            DataGridView1.Columns.Add("Nombre", "Nombre")
            DataGridView1.Columns.Add("Apellidos", "Apellidos")
            DataGridView1.Columns.Add("Direccion", "Direccion")
            DataGridView1.Columns.Add("Telefono", "Telefono")
            DataGridView1.Columns.Add("NombrePais", "Nombre Pais")
            'Nombre de la propiedad de cada columna
            DataGridView1.Columns(0).DataPropertyName = "IdProveedor"
            DataGridView1.Columns(1).DataPropertyName = "Nombre"
            DataGridView1.Columns(2).DataPropertyName = "Apellidos"
            DataGridView1.Columns(3).DataPropertyName = "Direccion"
            DataGridView1.Columns(4).DataPropertyName = "Telefono"
            DataGridView1.Columns(5).DataPropertyName = "NombrePais"
            'Carga el DataGridView1 con los datos de la consulta LINQ
            DataGridView1.DataSource = consulta
        End Sub

    Y ActualizarDatosGrid() es el siguiente:

        Sub ActualizarDatosGrid()
            Try
                'Obtenemos la fila actual cuyo registro esta habilitado
                Dim x = Convert.ToInt32(DataGridView1.CurrentCell.RowIndex.ToString())
                'Cargamos en cada TextBox los valores de cada columna  dada por la posicion del registro (fila x)
                txtProveedor.Text = DataGridView1("ID Proveedor", x).Value
                txtNombre.Text = DataGridView1("Nombre", x).Value
                txtApellidos.Text = DataGridView1("Apellidos", x).Value
                txtDireccion.Text = DataGridView1("Direccion", x).Value
                txtTelefono.Text = DataGridView1("Telefono", x).Value
                cmbPaises.Text = DataGridView1("NombrePais", x).Value
            Catch ex As Exception
                'No se pone nada 
            End Try
        End Sub

    martes, 5 de enero de 2016 17:53
  • ahh ok esos metodo trabajan con el grid, veo que no afectan al combo

    intentaste lo que sugeri de asignar directo el valor al datasource

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 5 de enero de 2016 18:00
  • Si ya intente pero tampoco funciona de esa manera, creo que no hay errores en el codigo pero no muestra ningun resultado
    martes, 5 de enero de 2016 18:08