簡體   English   中英

位數據類型到SQL Server 2008中從數據庫到數據集的枚舉類型映射

[英]Bit datatype to enum type mapping from database to dataset in SQL Server 2008

我有一個具有Xyz列的表,並且在SQL Server 2008中具有bit數據類型。

我通過數據適配器從表中獲取值,並將其存儲在DataSet並且DataGridView將顯示DataSet的內容

在GridView,列Xyz ,有/無蜱一個check_box顯示,但我想將其顯示為買入/賣出的文本,而不是復選框。

您可以用2種方式之一來處理它。

1)而不是一點點返回數據,而是在查詢中進行強制轉換以使其根據值作為字符串返回Buy / Sell。 僅當您的網格為只讀時,這才真正有效。 如果您需要能夠添加/編輯數據,將您的“購買/出售”轉換回一點並強制用戶只能輸入“購買/出售”會很麻煩。 如果您需要添加/編輯數據,則可能要使用方法2。

例如,假設您的列名稱稱為BuySell,且類型為bit

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";
        }
    }
}

如果您的網格需要可編輯,請設置一個數據表,該數據表使用顯示成員和值成員代表您的買/賣值。 將其綁定為組合框列的數據源。 現在,加載數據將在組合框中正確顯示“買/賣”,並且當您從下拉列表中選擇一個值時,對於新行,它將使用正確的位值填充基礎數據源。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM