C'è una vista datagrid in un modulo che mostra il contenuto della tabella del database, una colonna di tipo di tabella è booleana, quindi in datagridview mostra true/false, ma voglio personalizzarlo in mostra Sì/No. quale strada suggerisci?mostra Sì/NO invece True/False in datagridview
risposta
Quando si tratta di formattazione personalizzata, mi vengono in mente due possibili soluzioni.
1.Handle CellFormatting
evento e formattare il proprio.
void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (e.ColumnIndex == yourcolumnIndex)
{
if (e.Value is bool)
{
bool value = (bool)e.Value;
e.Value = (value) ? "Yes" : "No";
e.FormattingApplied = true;
}
}
}
2.Utilizzare Custom Formatter
public class BoolFormatter : ICustomFormatter, IFormatProvider
{
public object GetFormat(Type formatType)
{
if (formatType == typeof(ICustomFormatter))
{
return this;
}
return null;
}
public string Format(string format, object arg, IFormatProvider formatProvider)
{
if (arg == null)
{
return string.Empty;
}
bool value = (bool)arg;
switch (format ?? string.Empty)
{
case "YesNo":
{
return (value) ? "Yes" : "No";
}
case "OnOff":
{
return (value) ? "On" : "Off";
}
default:
{
return value.ToString();//true/false
}
}
}
}
Quindi utilizzare in questo modo, e gestire CellFormatting
evento per farlo funzionare
dataGridView1.Columns[1].DefaultCellStyle.FormatProvider = new BoolFormatter();
dataGridView1.Columns[1].DefaultCellStyle.Format = "YesNo";
void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (e.CellStyle.FormatProvider is ICustomFormatter)
{
e.Value = (e.CellStyle.FormatProvider.GetFormat(typeof(ICustomFormatter)) as ICustomFormatter).Format(e.CellStyle.Format, e.Value, e.CellStyle.FormatProvider);
e.FormattingApplied = true;
}
}
Modifica È possibile iscriversi a CellFormatting
evento come questo
dataGridView1.CellFormatting += dataGridView1_CellFormatting;
Spero che questo aiuti
Questo evento 'CellFormatting' quando occures? Voglio mostrare Sì/No sempre! –
@MiladSobhkhiz non è sicuro di cosa intendi, devi sottoscrivere l'evento 'CellFormatting' che si verificherà ogni volta prima di mostrare il valore sulla griglia. controlla la mia modifica. –
ne dite di questo, se si vogliono solo mostrare. È facile da pensare.
private void Form1_Load(object sender, EventArgs e)
{
List<Person> list = new List<Person>();
list.Add(new Person(20, true));
list.Add(new Person(25, false));
list.Add(new Person(30, true));
dgv.DataSource = list;
//Hide checkbox column
dgv.Columns["IsProgrammer"].Visible = false;
//Add represent text column
DataGridViewTextBoxColumn textColumn = new DataGridViewTextBoxColumn();
textColumn.Name = "Yes/No";
dgv.Columns.Add(textColumn);
//true/false -> yes/no
foreach (var row in dgv.Rows.Cast<DataGridViewRow>())
row.Cells["Yes/No"].Value = (bool)row.Cells["IsProgrammer"].Value ? "Yes" : "No";
}
private class Person
{
public int Age { get; set; }
public bool IsProgrammer { get; set; }
public Person(int i, bool b)
{
Age = i;
IsProgrammer = b;
}
}
void dataGridView_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
var grid = (DataGridView)sender;
if (grid.Columns[e.ColumnIndex].Name == "IsActive")
{
e.Value = (bool)e.Value ? "True_Text_Replace" : "False_Text_Replace";
e.FormattingApplied = true;
}
}
- 1. Haskell: SìNo digitare classe. Perché integer?
- 2. Mostra 1k invece di 1.000
- 3. DataGridView non mostra le proprietà degli oggetti che implementano ICustomTypeDescriptor
- 4. DataGridview search: mostra solo searchresult e nasconde altre righe?
- 5. Unisci celle in datagridview
- 6. File DragnDrop in DataGridView
- 7. JMSSerializerBundle Mostra valore vuoto invece di valore nullo
- 8. VS2015 Goto Definizione mostra metadati invece di Visualizzatore oggetti
- 9. Mostra Sì/No-Dialog invece di OK/Annulla
- 10. android - controllo IME mostra azione di ricerca invece di immettere
- 11. di Perl Data :: Dumper mostra gli oggetti invece di valori
- 12. Formattazione DataGridView condizionale
- 13. httpErrors mostra 500 errori invece di YSOD sulla macchina locale
- 14. NVD3 - Mostra grafico vuoto invece di noData messaggio
- 15. contenuti DIV mostra sulla pagina invece di JQuery Dialog
- 16. Come unire DataGridView cellulare in WinForms
- 17. sostituire vero/falso in DataGridView Colonne
- 18. Righe di gruppo in DataGridView
- 19. Come utilizzare SortMode in DataGridView
- 20. Sostituzione di un DateTime.MinValue in un DataGridView
- 21. Eventi DataGridView CheckBox
- 22. Come formattare le colonne DateTime in DataGridView?
- 23. ComboBox in DatagridView in modalità di modifica
- 24. Mostra il numero di riga nell'intestazione di riga di un DataGridView
- 25. datagridview row click
- 26. DataGridView Modifica nomi colonna
- 27. Mantenere un DataGridView autosortato
- 28. DataGridView Altezza riga Autosize
- 29. Datagridview, pulsante disabilitazione/riga
- 30. DataGridView elemento doppio clic
vedere http://stackoverflow.com/questions/9914411/replace-true-false-in-datagridview-columns?rq=1 – Shoe