Ho un DataGridView con modalità di sola lettura impostato su true (non modificabile) che accetta valori da un database sul caricamento del modulo. Quando imposto la modalità di sola lettura su false (modalità modificabile), voglio che una particolare colonna (ad esempio Department) sia visibile come ComboBox in modo da poter selezionare i valori da lì. E quando entrerò in modalità di sola lettura, il ComboBox dovrebbe scomparire e DataGridView dovrebbe essere visibile come di consueto. Come raggiungerlo? Sto usando C# framework 4.0, WinformsComboBox in DatagridView in modalità di modifica
risposta
Vedere l'implementazione allo ComboBox with read only behavior.
È inoltre possibile modificare DisplayStyle
in base a quando viene modificata la proprietà di sola lettura della proprietà DataGridView
. L'impostazione di DisplayStyle
su DataGridViewComboBoxDisplayStyle.Nothing
nasconderà il pulsante a discesa.
Per esempio, la modifica della proprietà ReadOnly
con un clic del pulsante sarebbe simile a questa:
private void mChangeReadOnlyButton_Click(object sender, EventArgs e)
{
ComboBoxColumn2.DisplayStyle = (dataGridView1.ReadOnly) ?
DataGridViewComboBoxDisplayStyle.ComboBox :
DataGridViewComboBoxDisplayStyle.Nothing;
dataGridView1.ReadOnly = !dataGridView1.ReadOnly;
}
modificabile:
Editable http://i51.tinypic.com/5e7o1w.jpg
ReadOnly:
ho la mia soluzione in realtà, ma davvero dispiaciuto, l'ho cancellato per errore. e non l'ho cancellato ora. scusa per i guai. Ma nella mia soluzione sto affrontando un problema, quando il mio rowindex e columnindex sono uguali. la tua soluzione funziona bene per me. Grazie. – Sandy
Ho trovato la soluzione al mio problema, ho pensato di postarlo qui. Entrando in modalità di modifica, l'esecuzione del seguente codice può risolvere il 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;
}
}
Prima di impostare dgc su dataGridCell, è possibile aggiungere raccolte di elementi. Spero che sia d'aiuto.
PROBLEMA: Se l'indice di colonna e riga, diventa uguale durante la modifica, viene visualizzato un errore: l'operazione non è valida perché risulta in una chiamata di rientro alla funzione SetCurrentCellAddressCore.
Adoro questo post. Tutto il resto che ho trovato in rete è stato prolisso e confuso e non proprio quello che stavo cercando LIFE RAVER !! :) –
Sono felice di avere un tale commento :) – Sandy
Se si vuole nascondere una casella combinata per le righe selezionate è possibile utilizzare la proprietà DataGridViewComboBoxDisplayStyle
Le opzioni sono ComboBox, DropdownBox o Nessuno
Nell'esempio - visualizzare solo la casella combinata nella colonna 4 se c'è un valore in colonna 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. Evento cella combobox DataGridView in C#
- 2. Aggiunta di Combobox alle intestazioni DataGridView
- 3. Scorri il Combobox all'interno di datagridview
- 4. Diversi valori ComboBox in DataGridView in diverse righe
- 5. DataGridView - "Stile di selezione cella" - Modifica cella
- 6. DataGridView: Modifica Modifica Dimensione controllo durante la modifica
- 7. DataGridView Modifica nomi colonna
- 8. Selezione di UITableViewCell in modalità di modifica
- 9. Modifica di ComboBox SelectedIndex senza evento di trigger in C#
- 10. Modifica dinamica colore cella datagridview
- 11. Come disabilitare la modifica di elementi in combobox per C#?
- 12. Passwords in modifica della modalità di modifica del metodo Emacs
- 13. Modifica dinamica del DataStore di un ComboBox
- 14. Excel VBA: trigger Salva come Modifica evento in ComboBox
- 15. Modifica codice in Visual Studio 2008 in modalità di debug
- 16. Modifica file in modalità di sola lettura in Python
- 17. WPF DataGrid non in uscita in modalità di modifica
- 18. left circle in modalità di modifica UITableViewCell appare in iOS8
- 19. iOS7 - ABPersonViewController, modalità di modifica
- 20. JavaFX ComboBox modifica il valore causa IndexOutOfBoundsException
- 21. Come impostare un'icona di modifica stile personalizzata in un UITableViewCell in modalità di modifica
- 22. DataBinding WPF: modifica proprietà annullata - Combobox disallinea
- 23. Rinominare il pulsante "Elimina" in modalità di modifica di tableviewcontroller
- 24. Visualizzazione di FontFamily in Combobox
- 25. Modifica il colore della riga in DataGridView in base alla quantità di un valore di cella
- 26. comboBox genera una tabella invece di span in readmode web
- 27. personalizzato UITableViewCell in modalità di modifica non muovere le UILabels
- 28. Come disabilitare la modalità di modifica in QTableView?
- 29. Modifica la modalità di fusione alfa in WPF?
- 30. ios didselectrowatindexpath non chiamato in modalità di modifica
Cosa intendi per 'scomparire'? Vuoi che l'intera colonna sia nascosta, o solo che la casella combinata sia disabilitata (cioè l'utente non può selezionare l'elenco a discesa dalla casella combinata? – SwDevMan81
Voglio dire, la vista datagrid si trova nella sua modalità normale e nella casella combinata ma non nella colonna – Sandy