我有一个表Xyz
,在SQL Server 2008中有bit
数据类型。
我通过数据适配器从表中获取值,并将其存储在DataSet
和DataGridView
中,将显示DataSet
中的内容
在gridview中,对于列Xyz
,会显示带/不带勾号的check_box,但我想将其显示为买入/卖出而不是复选框。
答案 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。将其绑定为组合框列的数据源。现在加载数据将在组合框中正确显示买/卖,当您从下拉列表中选择一个值时,它将使用正确的位值填充您的基础数据源。