Możesz sobie z tym poradzić na 1 z 2 sposobów.
1) Zamiast zwracać dane jako bit, wykonaj rzutowanie w zapytaniu, aby zwróciło Kup/Sprzedaj jako ciąg na podstawie wartości. To naprawdę działa dobrze tylko wtedy, gdy twoja siatka jest tylko do odczytu. Jeśli chcesz mieć możliwość dodawania/edycji danych, przekonwertowanie kupna/sprzedaży z powrotem na trochę i wymuszenie, aby użytkownik mógł tylko wprowadzić kupno/sprzedaż, byłoby kłopotliwe. Prawdopodobnie będziesz chciał użyć metody 2, jeśli chcesz dodać/edytować dane.
np. powiedzmy, że nazwa Twojej kolumny nazywa się BuySell i jest typu bit
SELECT CASE WHEN BuySell = CAST(0 AS BIT) THEN 'Buy' ELSE 'Sell' AS BuySell FROM TableName
2) Będziesz musiał wyłączyć "Autogeneratecolumns" w DataGridView i ręcznie skonfigurować kolumny. Jeśli twoja siatka jest tylko do odczytu, dodałbym kolumnę tekstową do kolumny kupna/sprzedaży, która mapuje na twoją wartość bitową. Następnie w zdarzeniu Cell_Formatting dla siatki zaktualizuj wartość na podstawie bitu. Coś takiego jak poniżej:
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";
}
}
}
Jeśli Twoja siatka musi być edytowalna, skonfiguruj DataTable, która reprezentuje Twoje wartości Kup/Sprzedaj za pomocą elementu wyświetlania i elementu wartości. Powiąż to jako źródło danych dla kolumny combobox. Teraz wczytanie danych spowoduje prawidłowe wyświetlenie opcji Kup/Sprzedaj w polu kombi, a w przypadku nowych wierszy po wybraniu wartości z menu rozwijanego spowoduje wypełnienie bazowego źródła danych prawidłową wartością bitową.