Puoi gestirlo in 1 di 2 modi.
1) Invece di restituire i dati come bit, esegui il casting nella tua query per far sì che restituisca Compra/Vendi come una stringa in base al valore. Questo funzionerà davvero bene solo se la tua griglia è di sola lettura. Se devi essere in grado di aggiungere/modificare dati, sarebbe complicato convertire il tuo acquisto/vendita in un po' e imporre che l'utente possa inserire solo acquisto/vendita. Probabilmente vorrai utilizzare il metodo 2 se hai bisogno di aggiungere/modificare dati.
per esempio. diciamo che il nome della tua colonna si chiama BuySell ed è di tipo bit
SELECT CASE WHEN BuySell = CAST(0 AS BIT) THEN 'Buy' ELSE 'Sell' AS BuySell FROM TableName
2) Dovrai disattivare "Autogeneratecolumns" su DataGridView e impostare manualmente le colonne. Se la tua griglia è di sola lettura, aggiungerei una colonna di testo per la tua colonna di acquisto/vendita che corrisponde al valore del tuo bit. Quindi nell'evento Cell_Formatting per la griglia, aggiorna il valore in base al bit. Qualcosa come il seguente:
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";
}
}
}
Se la tua griglia deve essere modificabile, imposta una DataTable che rappresenti i tuoi valori di acquisto/vendita con un membro display e un membro valore. Associalo come origine dati per una colonna della casella combinata. Ora il caricamento dei dati visualizzerà correttamente Compra/Vendi nella casella combinata e per le nuove righe quando selezioni un valore dal menu a discesa popolerà l'origine dati sottostante con il valore di bit corretto.