Je kunt het op 1 van de 2 manieren aanpakken.
1) In plaats van de gegevens als een bit terug te geven, moet u de casting in uw query uitvoeren om Kopen/Verkopen als een tekenreeks te laten retourneren op basis van de waarde. Dit werkt alleen echt goed als uw raster alleen-lezen is. Als u gegevens moet kunnen toevoegen/bewerken, zou het rommelig worden om uw Kopen/Verkopen terug te zetten naar een bit en af te dwingen dat de gebruiker alleen kopen/Verkopen kan invoeren. U zou waarschijnlijk methode 2 willen gebruiken als u gegevens moet toevoegen/bewerken.
bijv. laten we zeggen dat uw kolomnaam BuySell heet en van het type bit is
SELECT CASE WHEN BuySell = CAST(0 AS BIT) THEN 'Buy' ELSE 'Sell' AS BuySell FROM TableName
2) U moet "Autogeneratecolumns" op de DataGridView uitschakelen en uw kolommen handmatig instellen. Als uw raster alleen-lezen is, zou ik een tekstkolom voor uw koop-/verkoopkolom toevoegen die overeenkomt met uw bitwaarde. Werk vervolgens in de Cell_Formatting-gebeurtenis voor het raster de waarde bij op basis van de bit. Iets als het onderstaande:
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";
}
}
}
Als uw raster bewerkbaar moet zijn, stelt u een gegevenstabel in die uw koop-/verkoopwaarden vertegenwoordigt met een weergavelid en waardelid. Bind dat als de gegevensbron voor een combobox-kolom. Als u nu de gegevens laadt, wordt Kopen/Verkopen correct weergegeven in de combobox en voor nieuwe rijen, wanneer u een waarde selecteert in de vervolgkeuzelijst, wordt uw onderliggende gegevensbron gevuld met de juiste bitwaarde.