将数据类型的位数据类型映射到SQL Server 2008中从数据库到数据集的枚举类型

时间:2012-10-31 12:23:31

标签: database sql-server-2008 datagridview dataset

我有一个表Xyz,在SQL Server 2008中有bit数据类型。

我通过数据适配器从表中获取值,并将其存储在DataSetDataGridView中,将显示DataSet中的内容

在gridview中,对于列Xyz,会显示带/不带勾号的check_box,但我想将其显示为买入/卖出而不是复选框。

1 个答案:

答案 0 :(得分:2)

你可以用两种方式中的一种来处理它。

1)不要将数据作为一点返回,而是在查询中进行转换,使其根据值返回Buy / Sell作为字符串。如果您的网格是只读的,这将只能很好地工作。如果您需要能够添加/编辑数据,将您的买/卖转换回一点并强制用户只能输入买入/卖出会变得混乱。如果需要添加/编辑数据,可能需要使用方法2.

e.g。假设你的列名称叫做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";
        }
    }
}

如果您的网格需要可编辑,请使用displaymember和valuemember设置代表您的买/卖价值的DataTable。将其绑定为组合框列的数据源。现在加载数据将在组合框中正确显示买/卖,当您从下拉列表中选择一个值时,它将使用正确的位值填充您的基础数据源。