Tengo un DataGridView con modo de solo lectura establecido en verdadero (no editable) que toma valores de una base de datos en la carga de formulario. Cuando configuro el modo de solo lectura en falso (modo editable), quiero que una columna en particular (por ejemplo, Departamento) sea visible como ComboBox para que pueda seleccionar valores desde allí. Y cuando entro al modo de solo lectura, el ComboBox debería desaparecer y DataGridView debería estar visible de forma normal. ¿Cómo lograrlo? Estoy usando C# framework 4.0, WinformsComboBox en DatagridView en el modo de edición
Respuesta
Consulte la implementación en ComboBox with read only behavior.
También podría cambiar el DisplayStyle
en función de cuando se cambia el solo de la propiedad DataGridView
. Establecer el DisplayStyle
en DataGridViewComboBoxDisplayStyle.Nothing
ocultará el botón desplegable.
Por ejemplo, el cambio de la propiedad ReadOnly
con un clic de botón sería algo como esto:
private void mChangeReadOnlyButton_Click(object sender, EventArgs e)
{
ComboBoxColumn2.DisplayStyle = (dataGridView1.ReadOnly) ?
DataGridViewComboBoxDisplayStyle.ComboBox :
DataGridViewComboBoxDisplayStyle.Nothing;
dataGridView1.ReadOnly = !dataGridView1.ReadOnly;
}
editable:
Editable http://i51.tinypic.com/5e7o1w.jpg
de sólo lectura:
tengo mi solución de hecho, pero realmente lo siento, lo eliminé por error. y lo restauré ahora. Perdon por el problema. Pero en mi solución estoy enfrentando un problema, cuando mi rowindex y columnindex son los mismos. tu solución funciona bien para mí Gracias. – Sandy
Encontré la solución a mi problema, solo pensé en publicarlo aquí. Al ingresar al modo de edición, ejecutar el siguiente código puede resolver el problema.
public void bgCombo(DataGridView dg)
{
foreach (DataGridViewRow row in dg.Rows)
{
DataGridViewComboBoxCell dgc = new DataGridViewComboBoxCell();
dgc.Value = row.Cells["Department"].Value;
row.Cells["Department"] = dgc;
}
}
Antes de configurar dgc a dataGridCell podemos agregar colecciones de elementos en él. Espero eso ayude.
PROBLEMA: Si el índice de columnas y filas se convierte en el mismo durante la edición, aparece un error: la operación no es válida porque da como resultado una llamada de reentrada a la función SetCurrentCellAddressCore.
Me encanta esta publicación. Todo lo demás que encontré en la red fue largo y confuso y no es lo que estaba buscando. LIFE SAVER !! :) –
Estoy contento de tener dicho comentario :) – Sandy
Si desea ocultar un cuadro combinado para las filas seleccionadas se puede utilizar la propiedad DataGridViewComboBoxDisplayStyle
Las opciones son ComboBox, DropdownBox o Ninguno
En el ejemplo - sólo se mostrará el cuadro combinado en la columna 4 si hay un valor en columna 2
For Each row As DataGridViewRow In dgv.Rows
Dim Cell As DataGridViewComboBoxCell = CType(row.Cells(4), DataGridViewComboBoxCell)
Cell.ReadOnly = True
Cell.DisplayStyle = DataGridViewComboBoxDisplayStyle.Nothing
If row.Cells(2).Value IsNot Nothing Then
Cell.ReadOnly = False
Cell.DisplayStyle = DataGridViewComboBoxDisplayStyle.ComboBox
End If
Next
- 1. Datagridview: ¿Cómo establecer una celda en modo de edición?
- 2. ¿Puede un control combobox alojado en la celda DataGridView solicitar finalizar la edición?
- 3. Combobox for Foreign Key en DataGridView
- 4. Diferentes valores de ComboBox en DataGridView en filas diferentes
- 5. Edición detección de estado casilla de verificación en DataGridView
- 6. Cómo detectar el modo de edición en el iPhone UITableView
- 7. ¿Webpart está en modo de edición?
- 8. UITableView, interceptando el modo de edición
- 9. CellEditingTemplate de DataGrid y enfoque en el modo de edición
- 10. DataGridView Combobox celular establecer la columna
- 11. Salir del modo de edición
- 12. Sin modo de edición en el portlet Liferay
- 13. ASP GridView Todas las Filas En el Modo de Edición
- 14. Cómo deshabilitar el modo de edición en QTableView?
- 15. Seleccionar una UITableViewCell en el modo de edición
- 16. En UITableViewCell ¿cómo puedo revertir el modo de confirmación de eliminación al modo de edición normal?
- 17. Contraseñas en la edición en modo vagabundo de Emacs
- 18. El evento de selección de DataGridView no funciona en C#
- 19. Modo de edición de UITableView no funciona
- 20. Configuración de un UITextField en modo de edición mediante programación
- 21. DataGridView: Aplicar una edición a todas las filas seleccionadas
- 22. UITableView Modo de edición Mostrar botones personalizados
- 23. WPF DataGrid - Establecer una celda en modo de edición programáticamente
- 24. ¿Cómo seleccionar filas mientras está en modo de edición?
- 25. ¿Cómo detectar que UITableView está en modo de edición?
- 26. Poner una fila gridview en modo de edición programáticamente
- 27. Seleccionar fila mientras UITableView está en modo de edición
- 28. ¿Indicador bash diferente para el modo de edición vi diferente?
- 29. Asas de estilo/puntos de control en la polilínea en el modo de edición
- 30. Cómo cambiar el estilo de ComboBox de celda en DataGridViewComboBoxColumn
¿Qué quiere decir 'disappear'? ¿Desea que se oculte toda la columna o que se deshabilite el cuadro combinado (es decir, el usuario no puede seleccionar la lista desplegable del cuadro combinado? – SwDevMan81
Quiero decir, la vista de tabla de datos está en su modo normal y el cuadro combinado aparece pero no la columna . – Sandy