Foros del Web » Programación para mayores de 30 ;) » .NET »

DatagridViewComboBoxCell value is not valid

Estas en el tema de DatagridViewComboBoxCell value is not valid en el foro de .NET en Foros del Web. Hola, Tengo un problema al añadir en un Datagridview una columna DatagridViewcomboboxColumn. Al añadir la columna obtengo el siguiente error DatagridViewComboBoxCell value is not valid ...
  #1 (permalink)  
Antiguo 15/10/2006, 11:56
 
Fecha de Ingreso: febrero-2002
Mensajes: 58
Antigüedad: 22 años, 2 meses
Puntos: 0
DatagridViewComboBoxCell value is not valid

Hola,

Tengo un problema al añadir en un Datagridview una columna DatagridViewcomboboxColumn. Al añadir la columna obtengo el siguiente error

DatagridViewComboBoxCell value is not valid

Alguien tiene alguna idea de cual puede ser el problema?
Gracias

Este es el código que utilizo

Friend column_combo As DataGridViewComboBoxColumn = New DataGridViewComboBoxColumn()
....

FbConnection.Open()

dbDataAdapter = New FirebirdSql.Data.FirebirdClient.FbDataAdapter(SQL, FbConnection)
dbDataAdapter.Fill(dbDataSet)

Me.DGV.DataSource = dbDataSet.Tables(0)

......

With column_combo
.HeaderCell.Value = " "
.HeaderCell.Style.Font = New Font("Bookman Old Style", 8, FontStyle.Bold)
.HeaderCell.Style.BackColor = Color.DimGray
.HeaderCell.Style.ForeColor = Color.White
.HeaderCell.Style.Alignment = DataGridViewContentAlignment.MiddleCenter
.DataPropertyName = "CANTIDAD"
.Name = "CANTIDAD"
.HeaderCell.Value = "CANTIDAD"
.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleLeft
.Visible = True
.AutoComplete = True
.ReadOnly = False
.ToolTipText = "Cantidad"
End With
Me.DGV.Columns.Add(column_combo)
__________________
Un saludo
Mafc
España
  #2 (permalink)  
Antiguo 18/10/2006, 08:47
 
Fecha de Ingreso: mayo-2004
Ubicación: Guadalajara, Jalisco, México
Mensajes: 724
Antigüedad: 20 años
Puntos: 6
Amigo:

Estas usando un DatagridViewcomboboxColumn
Asi que primero hay que meter los items a tal combo
With column_combo
'por ejemplo
for i as integer = 0 to 100
.items.add(i.tostring())
next
  #3 (permalink)  
Antiguo 19/10/2006, 09:29
 
Fecha de Ingreso: mayo-2004
Ubicación: Guadalajara, Jalisco, México
Mensajes: 724
Antigüedad: 20 años
Puntos: 6
Holaz, te respondo aqui para que si de alguna manera se aprobeche por mas gente la respuesta...
Hize un ejemplisho muy claro creo yo.. espero te sirva...


Código:
            //primero llenamos la columna tipo combo dentro de datagridview
            DataTable tabla = new DataTable("Cant");
            tabla.Columns.Add(new DataColumn("num", typeof(System.Int16)));

            for (int i = 0; i < 100; i++)
            {
                DataRow dr = tabla.NewRow();
                dr["num"] = i;
                tabla.Rows.Add(dr);
            }
//Cantidad es de tipo DataGridViewComboBoxColumn dentro del datagridview
            this.Cantidad.DataSource = tabla;
            this.Cantidad.DisplayMember = "num";
            this.Cantidad.ValueMember = "num";

            //imaginate que ahora nos traemos los datos de la BD, pero yo q hago aqui, has de cuenta que como si ubieramos usado una BD para traenos los datos en la tabla productos

            DataTable productos = new DataTable("Productos");
            productos.Columns.Add(new DataColumn("IdProducto", typeof(System.Int16)));
            productos.Columns.Add(new DataColumn("Nombre", typeof(System.String)));
            productos.Columns.Add(new DataColumn("Cant", typeof(System.Int16)));

            DataRow drp = productos.NewRow();
            drp["IdProducto"] = 15;
            drp["Nombre"] = "Azucar";
            drp["Cant"] = 20;
            productos.Rows.Add(drp);

            drp = productos.NewRow();
            drp["IdProducto"] = 16;
            drp["Nombre"] = "Naranjas";
            drp["Cant"] = 60;
            productos.Rows.Add(drp);

            //ok, ya tenemos los datos en un dataset o datatable
            dataGridView1.AutoGenerateColumns = false;
            this.dataGridView1.DataSource = productos;

  //lo q hace falta poner es rellenar el combo cantidad de data row dentro de datagridview...
            for (int j = 0; j <= this.dataGridView1.Rows.Count-1; j++)
            {
                DataGridViewComboBoxCell c = (DataGridViewComboBoxCell)this.dataGridView1.Rows[j].Cells[1];
                c.Value = productos.Rows[j]["Cant"];
            }
 
y ya....

Espero te sirva.. saludos..
  #4 (permalink)  
Antiguo 20/10/2006, 09:11
 
Fecha de Ingreso: mayo-2004
Ubicación: Guadalajara, Jalisco, México
Mensajes: 724
Antigüedad: 20 años
Puntos: 6
Que paso, te sirvio esto??
  #5 (permalink)  
Antiguo 20/10/2006, 11:15
 
Fecha de Ingreso: mayo-2004
Ubicación: Guadalajara, Jalisco, México
Mensajes: 724
Antigüedad: 20 años
Puntos: 6
Bueno, el ultimo for no lo ocupa, solo basta con poner la propiedad DataPropertyName dela columna combo... asi que, quitarias el for...

saludos...
  #6 (permalink)  
Antiguo 20/10/2006, 18:08
 
Fecha de Ingreso: febrero-2002
Mensajes: 58
Antigüedad: 22 años, 2 meses
Puntos: 0
Perdona por la tardanza en contestar, pero no he podido mirarlo antes. Parece que ya casi funciona. Lo que me falla ahora es que cuando doy a la flecha para ver los items de una celda (columComboBox) me muestra el numero de elementos correcto pero en vez de ver el contenido de cada fila me muestra en todas System.Data.DataRowView. Pero cuando elijo una y cambio a otra celda aparece el valor correcto. No se si me explico bien. Este es el código que utilizo.

.......
' Carga en el combo las posibles cantidades
SQL = "select CANT_NOMBRE from T_CANTIDADES"

Dim dbDataSet_Cantidades As New Data.DataSet
Dim tabla_Cantidades As New DataTable

Try
dbDataSet_Cantidades.Clear()

dbDataAdapter = New FirebirdSql.Data.FirebirdClient.FbDataAdapter(SQL, FbConnection)
dbDataAdapter.Fill(dbDataSet_Cantidades)

tabla_Cantidades = dbDataSet_Cantidades.Tables(0)

Catch ex As Exception ' catches any error

MsgBox("Ha fallado al rellenar la columna cantidad")
Finally
End Try

With column_combo

.DataSource = tabla_Cantidades
.DisplayMember = "CANT_NOMBRE"
.ValueMember = "CANT_NOMBRE"

.DataPropertyName = "CANTIDAD"
.HeaderText = "CANTIDAD"
.HeaderCell.Value = "CANTIDAD"
.ValueType = GetType(String)

End With

Me.DGV_Recetas.Columns.Add(column_combo)
__________________
Un saludo
Mafc
España
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:37.