visual studio propiedades net example ejemplos datos data agregar .net datagridview

.net - studio - fill datagridview c#



Cómo cambiar el estilo ComboBox de la celda en DataGridViewComboBoxColumn (3)

La siguiente solución funciona para mí

private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e) { if (e.ColumnIndex == Column1.Index) { // Add the value to column''s Items to pass validation if (!Column1.Items.Contains(e.FormattedValue.ToString())) { Column1.Items.Add(e.FormattedValue); dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = e.FormattedValue; } } } private void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) { if (dataGridView1.CurrentCell.ColumnIndex == Column1.Index) { ComboBox cb = (ComboBox)e.Control; if (cb != null) { cb.Items.Clear(); // Customize content of the dropdown list cb.Items.AddRange(appropriateCollectionOfStrings); cb.DropDownStyle = ComboBoxStyle.DropDown; } } }

Las celdas en DataGridViewComboBoxColumn tienen ComboBoxStyle DropDownList. Significa que el usuario solo puede seleccionar valores del menú desplegable. El control subyacente es ComboBox, por lo que puede tener estilo DropDown. ¿Cómo cambio el estilo del cuadro combinado subyacente en DataGridViewComboBoxColumn? O, más general, ¿puedo tener una columna en DataGridView con menú desplegable donde el usuario puede escribir?


void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) { if (e.Control.GetType() == typeof(DataGridViewComboBoxEditingControl)) { DataGridViewComboBoxEditingControl cbo = e.Control as DataGridViewComboBoxEditingControl; cbo.DropDownStyle = ComboBoxStyle.DropDown; } }

Problema con combobox y datagridview databound


if (!Column1.Items.Contains(e.FormattedValue.ToString())) { Column1.Items.Add(e.FormattedValue); dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = e.FormattedValue; }

siempre puede devolver verdadero porque Column1.Items.Contains() está buscando valores de String . si e.FormattedValue no es una String , la comparación fallará.

tratar

if (!Column1.Items.Contains(e.FormattedValue.ToString())) { Column1.Items.Add(e.FormattedValue.ToString()); dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = e.FormattedValue.ToString(); }

o

if (!Column1.Items.Contains(e.FormattedValue)) { Column1.Items.Add(e.FormattedValue); dataGridView1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = e.FormattedValue; }