none
El valor de DataGridViewComboBoxCell no es válido RRS feed

  • Debate general

  • El siguiente código es un fragmento del programa

    TipoConversion = new List<string>() { "Directa", "A Entero", "A Coma flotante", "A Moneda", "A Booleano", "A Fecha" };

    for (int indice = 0; indice < TipoConversion.Count; indice++)
    {
           TypeConversion.Add(indice.ToString(), TipoConversion[indice].ToString());
    }

    (grdTargetFields.Columns[2] as DataGridViewComboBoxColumn).DataSource = new BindingSource(TypeConversion, null);
    (grdTargetFields.Columns[2] as DataGridViewComboBoxColumn).ValueMember = "Key";
    (grdTargetFields.Columns[2] as DataGridViewComboBoxColumn).DisplayMember = "Value";   

    El problema se produce cuando pulso en combobox asociado a la celda. Muestra el valor numérico asociado, pero no el valor que debe visualizar.

    TypeConversion es un Dictionary, grdTargetFields es un datagridview con tres columnas que utiliza una tabla de Access con la siguiente estructura:

    Indice autonumerico

    CampoOrigen texto 20

    CampoDestino texto 20

    TipoConversion numerico (entero)


    domingo, 13 de agosto de 2017 17:28

Todas las respuestas

  • Me parece que falta asociar la propiedad DataPropertyName

    (grdTargetFields.Columns[2] as DataGridViewComboBoxColumn).DataPropertyName = "Key";
    Si bien en combobox se encuentra enlazado para mostrar los items. Cual es el valor de configuración que la celda del datagridview debe mostrar?

    miércoles, 16 de agosto de 2017 5:55
  • El valor que debe almacenar es Key, y el que debe mostrar Value.

    He puesto en practica la solución que me has dado, ahora ya no se muestra el combobox, directamente da el error.

    jueves, 17 de agosto de 2017 6:11
  • Revisando la estructura de la tabla Access que mencionas, con los campos de nombres: Indice, CampoOrigen, CampoDestino, TipoConversion, el asunto esta en el enlace de datos de la tabla access con el datagridview.

    Ya que el combobox se encuentra bien enlazado y mostrando los items.

    Tu datagridview tiene que estar enlazado al campo TipoConversion (de la tabla access) de la sgt manera:

    (grdTargetFields.Columns[IndiceColumna] as DataGridViewComboBoxColumn).DataPropertyName = "TipoConversion";

    Donde IndiceColumna indica la columna a mostrarse en el datagridview.

    Me gustaria que me indicaras como estas enlazando el datagridview con la tabla Access.

    jueves, 17 de agosto de 2017 7:24
  • El datasource del objeto datagridview esta enlazado con un objeto BindingSource,  la propiedad datamember del grid esta enlazada con el nombre de la tabla en  Access (ExportImport)

    grdTargetFields.DataSouce = exportDBDataSetBindingSouce

    grdTargetFields.DataMember = ExportImport

    Existen otros tres objetos de datos

    exportDBDataSet, exportimporrtBindingSource, exportimportTableAdapter y tableAdapterManager

    exportimportBindingSource.DataMember = ExportImport

    exportImportBindingSource.DataSource. = exportDBDataSet

    Espero que la información te resulte uitil. Gracias por atenderme

    jueves, 17 de agosto de 2017 8:43