位数据类型来枚举类型映射从数据库到数据集在SQL Server 2008(Bit datatype

2019-07-03 11:47发布

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

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

在GridView,列Xyz ,具有check_box /无滴答显示,但我想将其显示为买入/卖出的文本,而不是复选框。

Answer 1:

你可以在1 2的方式来处理它。

1),而不是返回的数据作为位,做铸造在查询使其返回买/卖基于价值的字符串。 如果是只读的网格这样才真正运作良好。 如果你需要可以添加/编辑数据,它会变得一团糟转换您的买入/卖出回位和强制用户只能选择买/卖。 你可能会想,如果你需要添加/编辑数据使用方法2。

例如,假设您的列名叫做BuySell是类型位

SELECT CASE WHEN BuySell = CAST(0 AS BIT) THEN 'Buy' ELSE 'Sell' AS BuySell FROM TableName

2)你必须手动关闭“的AutoGenerateColumns”上的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您的买/卖值的数据表。 绑定,作为数据源的组合框列。 现在正在加载数据将正确显示买入/卖出的组合框和新行,当您选择从下拉它将填充您的底层数据源具有正确位的值。



文章来源: Bit datatype to enum type mapping from database to dataset in SQL Server 2008