Xyz
列がありbit
、SQL Server 2008 のデータ型を持つテーブルがあります。
データ アダプターを介してテーブルから値を取得していDataSet
ますDataGridView
。DataSet
gridview では、 columnXyz
に対して、目盛り付き/なしの check_box が表示されますが、チェックボックスではなく、テキストとして買い/売りとして表示したいと考えています。
Xyz
列がありbit
、SQL Server 2008 のデータ型を持つテーブルがあります。
データ アダプターを介してテーブルから値を取得していDataSet
ますDataGridView
。DataSet
gridview では、 columnXyz
に対して、目盛り付き/なしの check_box が表示されますが、チェックボックスではなく、テキストとして買い/売りとして表示したいと考えています。
2 つの方法のいずれかで処理できます。
1) データをビットとして返す代わりに、クエリでキャストを行い、値に基づいて購入/販売を文字列として返すようにします。これは、グリッドが読み取り専用の場合にのみうまく機能します。データを追加/編集できるようにする必要がある場合、Buy/Sell をビットに戻して、ユーザーが Buy/Sell のみを入力できるようにするのは面倒です。データを追加/編集する必要がある場合は、おそらく方法 2 を使用することをお勧めします。
たとえば、列名が BuySell と呼ばれ、ビット型であるとしましょう
SELECT CASE WHEN BuySell = CAST(0 AS BIT) THEN 'Buy' ELSE 'Sell' AS BuySell FROM TableName
2) DataGridView で「列の自動生成」をオフにして、列を手動で設定する必要があります。グリッドが読み取り専用の場合は、ビット値にマップする売買列にテキスト列を追加します。次に、グリッドの 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 をセットアップします。それをコンボボックス列のデータソースとしてバインドします。データをロードすると、コンボボックスに売買が正しく表示され、ドロップダウンから値を選択すると新しい行が表示され、基になるデータソースに正しいビット値が入力されます。