Ver Mensaje Individual
  #1 (permalink)  
Antiguo 30/11/2010, 07:00
jarogo
 
Fecha de Ingreso: septiembre-2009
Ubicación: Galicia
Mensajes: 111
Antigüedad: 14 años, 7 meses
Puntos: 3
Datagridview con columna combo

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