La clase DataGridViewComboBoxColumn es un tipo especializado de DataGridViewColumn que se utiliza para alojar de manera lógica celdas que permiten a los usuarios seleccionar valores en una lista de opciones. Un elemento DataGridViewComboBoxColumn tiene un elemento DataGridViewComboBoxCell asociado en cada objeto DataGridViewRow que interseca con él.
Puede rellenar las celdas manualmente estableciendo sus propiedades Value. Como alternativa, puede enlazar la columna al origen de datos indicado por la propiedad DataGridView..::.DataSource. Si la DataGridView está enlazada a una tabla de base de datos, establezca la propiedad DataPropertyName de la columna en el nombre de una columna de la tabla. Si la DataGridView está enlazada a una colección de objetos, establezca la propiedad DataPropertyName en el nombre de una propiedad de objeto.
Puede rellenar manualmente la lista desplegable de columnas agregando valores a la colección de Items. Como alternativa, puede enlazar la lista desplegable a su propio origen de datos estableciendo la propiedad DataSource de columna. Si los valores son objetos de una colección o registros de una tabla de base de datos, también se deben establecer las propiedades DisplayMember y ValueMember. La propiedad DisplayMember indica qué propiedad de objeto o columna de base de datos proporciona los valores que se muestran en la lista desplegable. La propiedad ValueMember indica qué propiedad de objeto o columna de base de datos se utiliza para establecer la propiedad Value de celda.
Una situación típica es enlazar el control DataGridView a una tabla de base de datos primaria y enlazar la lista desplegable a una tabla secundaria relacionada. Por ejemplo, se puede enlazar el control DataGridView a una tabla Orders que contiene una columna ProductID y establecer la propiedad DataSource de columna en una tabla Products que contiene las columnas ProductID y ProductName. En este caso, se establecería la propiedad DataPropertyName de columna en "ProductID" para rellenar los valores de sus celdas a partir de la columna Orders.ProductID. Sin embargo, para mostrar los nombres reales de los productos en las celdas y en la lista desplegable, se han de asignar estos valores a la tabla Products estableciendo la propiedad ValueMember en "ProductID" y la propiedad DisplayMember en "ProductName".
Los valores de lista desplegable (o los valores indicados por la propiedad ValueMember) deben incluir los valores de celda reales pues, de lo contrario, el control DataGridView producirá una excepción.
Cuando se establecen las propiedades DataSource, DisplayMember y ValueMember de columna, se establecen automáticamente las propiedades correspondientes de todas las celdas de la columna, incluida la propiedad CellTemplate. Para reemplazar los valores de estas propiedades para celdas específicas, establezca primero la propiedad de columna y, a continuación, establezca las propiedades de celda.
A diferencia del control ComboBox, DataGridViewComboBoxCell no tiene las propiedades SelectedIndex ni SelectedValue. En su lugar, cuando se selecciona un valor de una lista desplegable, se establece la propiedad Value de celda.
El modo de ordenación predeterminado de este tipo de columnas es NotSortable.
Notas para los herederos: Cuando derive del control DataGridViewComboBoxColumn y agregue nuevas propiedades a la clase derivada, asegúrese de reemplazar el método Clone para copiar las nuevas propiedades durante las operaciones de clonación. También debe llamar al método Clone de la clase base para que las propiedades de esta clase se copien en la nueva celda.