4

Xyz列がありbit、SQL Server 2008 のデータ型を持つテーブルがあります。

データ アダプターを介してテーブルから値を取得していDataSetますDataGridViewDataSet

gridview では、 columnXyzに対して、目盛り付き/なしの check_box が表示されますが、チェックボックスではなく、テキストとして買い/売りとして表示したいと考えています。

4

1 に答える 1

2

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 をセットアップします。それをコンボボックス列のデータソースとしてバインドします。データをロードすると、コンボボックスに売買が正しく表示され、ドロップダウンから値を選択すると新しい行が表示され、基になるデータソースに正しいビット値が入力されます。

于 2012-10-31T19:41:11.280 に答える