Ver Mensaje Individual
  #2 (permalink)  
Antiguo 30/11/2010, 21:52
Avatar de devilinside
devilinside
 
Fecha de Ingreso: marzo-2008
Ubicación: En Perú
Mensajes: 73
Antigüedad: 16 años, 1 mes
Puntos: 6
Respuesta: Datagridview con columna combo

Cita:
Iniciado por jarogo Ver Mensaje
Hola a todos!

estoy intentando cargar un datagridview mediante código, con la particularidad que hay un campo que en la base de datos
guarda 0/-1 y yo quiero que muestre "Si/No". Para ello defino una DataGridViewComboBoxColumn, pero no me funciona del
todo bien. Aparece el combo, me muestra los valores si y no cuando despliego, pero no cuando carga el grid. Me hace lo que
aparece en esta imagen:

http://img263.imageshack.us/img263/772/dibujokjq.jpg


Y este es el código que tengo. ¿Que estoy haciendo mal? Gracias de antemano!!

Código:
    Dim Conexion As String
    Dim Sql As String
    Dim DataAdapter As SqlDataAdapter
    Dim DataSet As New DataSet


    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Conexion = "Data Source=Equipo;Initial Catalog=Datos;Persist Security Info=True;User ID=Sa;Password=XXXX"


        Sql = "SELECT CodigoEmpresa, CodigoArticulo, Inactivo FROM Articulos ORDER BY CodigoArticulo"
        DataAdapter = New SqlDataAdapter(Sql, Conexion)
        DataSet.Reset()
        DataAdapter.Fill(DataSet, "Articulos")


        Dim a As New DataGridViewTextBoxColumn
        a.DataPropertyName = "CodigoEmpresa"
        a.Name = "CodigoEmpresa"
        DataGridView1.Columns.Add(a)

        Dim b As New DataGridViewTextBoxColumn
        b.DataPropertyName = "CodigoArticulo"
        b.Name = "CodigoArticulo"
        DataGridView1.Columns.Add(b)

        Dim c As New DataGridViewComboBoxColumn
        c.DataPropertyName = "Inactivo"
        c.Name = "Inactivo"
        c.DataSource = GetDatos()
        c.DisplayMember = "valor"
        c.ValueMember = "key"
        DataGridView1.Columns.Add(c)

        Me.DataGridView1.AutoGenerateColumns = False
        Me.DataGridView1.DataSource = Nothing
        Me.DataGridView1.DataSource = DataSet.Tables("Articulos")
    End Sub

    Private Function GetDatos() As DataTable

        Dim dt As New DataTable
        dt.Columns.Add("valor")
        dt.Columns.Add("key")

        Dim row As DataRow = dt.NewRow
        row("valor") = "Si"
        row("key") = "-1"
        dt.Rows.Add(row)

        row = dt.NewRow
        row("valor") = "No"
        row("key") = "0"
        dt.Rows.Add(row)

        Return dt

    End Function

    Private Sub DataGridView1_DataError(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewDataErrorEventArgs) Handles DataGridView1.DataError

    End Sub
hola, no me da el tiempo para probar tu código pero cuando he trabajado con combos he usado la propiedad DataPropertyName para indicarle el nombre de la columna (del datargidview) que actua como el SLECTEDvaluemember . prueba quitando esa línea.