Můžete to zvládnout 1 ze 2 způsobů.
1) Místo vracení dat jako bit proveďte casting ve svém dotazu, aby vrátil nákup/prodej jako řetězec založený na hodnotě. To bude opravdu dobře fungovat pouze v případě, že je vaše mřížka pouze pro čtení. Pokud potřebujete mít možnost přidávat/upravovat data, bylo by obtížné převést váš nákup/prodej zpět na bit a vynutit si, aby uživatel mohl zadat pouze nákup/prodej. Pokud potřebujete přidat/upravit data, pravděpodobně budete chtít použít metodu 2.
např. řekněme, že název vašeho sloupce se nazývá BuySell a je typu bit
SELECT CASE WHEN BuySell = CAST(0 AS BIT) THEN 'Buy' ELSE 'Sell' AS BuySell FROM TableName
2) Budete muset vypnout "Autogeneratecolumns" v DataGridView a nastavit sloupce ručně. Pokud je vaše mřížka pouze pro čtení, přidal bych textový sloupec pro váš sloupec nákupu/prodeje, který mapuje vaši bitovou hodnotu. Potom v události Cell_Formatting pro mřížku aktualizujte hodnotu na základě bitu. Něco jako níže:
private void dgv_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (dgv.Columns[e.ColumnIndex].Name == "buysell")
{
if (e.Value != null)
{
if (e.Value.ToString() == "1")
{
e.Value = "Sell";
}
else
{
e.Value = "Buy";
}
}
else
{
e.Value = "Buy";
}
}
}
Pokud je potřeba, aby byla vaše mřížka upravitelná, nastavte DataTable, která představuje vaše hodnoty nákupu/prodeje pomocí displaymember a valuemember. Svažte to jako zdroj dat pro sloupec pole se seznamem. Nyní načtení dat správně zobrazí Buy/Sell v comboboxu a pro nové řádky, když vyberete hodnotu z rozevíracího seznamu, naplní váš podkladový zdroj dat správnou bitovou hodnotu.