Diskuze: c# , nahradenie bool hodnoty v stlpci (tabulka +DGW)
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 5 zpráv z 5.
V předchozím kvízu, Test znalostí C# .NET online, jsme si ověřili nabyté zkušenosti z kurzu.
Ve formuláři přeci upravuješ, které sloupce toho DGV se mají zobrazit a které ne, jaký mají mít formát, šířku, apod. tak tam by se toto mělo dát ošetřit...
Ahoj na stack overflow (http://stackoverflow.com/…es-no-string) se mi podařilo najít formátování pomocí formátu stringu:
var truth = string.Format("{0:on;0;OFF}", true.GetHashCode());
var unTruth = string.Format("{0:on;0;OFF}", false.GetHashCode());
bude to vracet:
truth = on
unTruth = OFF
Takže když si to přepíšeš na Muž/Žena mělo by to fungovat. Snad by to mělo jít nastavit i jako formát sloupce datagridview (pokud ho používáš).
Další možností která už není tak pěkná je vytvořit si v tabulce ještě stringový sloupec a po načtení dat projet tabulky cyklem a podle bool hodnoty doplnit stringový popisek, to ale není moc pěkné.
A do třetice pokud tyto data pouze zobrazuješ a nepotřebuješ pracovat přímo s tou bool hodnotou, můžeš upravit SQL dotaz který ti načítá data z databáze aby ti vracel přímo požadovaný text (navím jakou db používáš, u SQL serveru to jde celkem pěkně řešit např. pomocí case when).
Druhý a třetí způsob ale narážejí na omezení že když tu bool hodnotu změníš až po načtení dat, musíš znovu spustit cykl který ti doplní správný popisek podle aktuální hodnoty (minimálně musíš přepočítat řádek kde došlo ke změně).
Diky, ale nasiel som asi lepsie riesenie, vyriesil som to pomocou eventu CellFormatting:
private void osobyDGV_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
var grid = (DataGridView)sender;
if (grid.Columns[e.ColumnIndex].Name == "Pohlavie" && e.Value != DBNull.Value)
{
e.Value = (bool)e.Value ? "Muz" : "Zena";
e.FormattingApplied = true;
}
}
Zobrazeno 5 zpráv z 5.