4

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

我通过数据适配器从表中获取值,并将其存储在 a 中DataSet,aDataGridView将显示来自DataSet

在 gridview 中,对于 column Xyz,显示带有/不带有刻度的复选框,但我想将其显示为作为文本而不是复选框的买入/卖出。

4

1 回答 1

2

您可以通过 2 种方式中的 1 种方式处理它。

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

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

于 2012-10-31T19:41:11.280 回答