2つの方法のいずれかで処理できます。
1)データをビットとして返す代わりに、クエリでキャストを実行して、値に基づいた文字列としてBuy/Sellを返すようにします。これは、グリッドが読み取り専用の場合にのみ実際にうまく機能します。データを追加/編集できるようにする必要がある場合は、購入/販売を少しに戻し、ユーザーが購入/販売しか入力できないようにするのは面倒です。データを追加/編集する必要がある場合は、おそらく方法2を使用することをお勧めします。
例えば列名がBuySellと呼ばれ、タイプがビットであるとします
SELECT CASE WHEN BuySell = CAST(0 AS BIT) THEN 'Buy' ELSE 'Sell' AS BuySell FROM TableName
2)DataGridViewの「Autogeneratecolumns」をオフにして、手動で列を設定する必要があります。グリッドが読み取り専用の場合は、ビット値にマップする購入/販売列のテキスト列を追加します。次に、グリッドのCell_Formattingイベントで、ビットに基づいて値を更新します。以下のようなもの:
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";
}
}
}
グリッドを編集可能にする必要がある場合は、displaymemberとvaluememberを使用してBuy/Sell値を表すDataTableを設定します。それをコンボボックス列のデータソースとしてバインドします。これで、データをロードすると、コンボボックスにBuy / Sellが正しく表示され、ドロップダウンから値を選択すると、基になるデータソースに正しいビット値が入力されます。