我有一个表,其中有一列Xyz
它有bit
SQL Server 2008 中的数据类型。
我通过数据适配器从表中获取值,并将其存储在DataSet
and a DataGridView
将显示来自的内容DataSet
在网格视图中,对于列Xyz
,显示一个带/不带勾的复选框,但我想将其显示为文本而不是复选框的购买/销售。
您可以通过两种方式之一来处理它。
1) 不要以位形式返回数据,而是在查询中进行转换,使其根据值以字符串形式返回买入/卖出。只有当您的网格是只读的时,这才真正有效。如果您需要能够添加/编辑数据,那么将您的买入/卖出转换回位并强制用户只能输入买入/卖出会变得混乱。如果您需要添加/编辑数据,您可能需要使用方法 2。
例如假设您的列名称称为 BuySell 并且类型为 bit
SELECT CASE WHEN BuySell = CAST(0 AS BIT) THEN 'Buy' ELSE 'Sell' AS BuySell FROM TableName
2)您必须关闭 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";
}
}
}
如果您的网格需要可编辑,请设置一个数据表,用显示成员和值成员表示您的买入/卖出值。将其绑定为组合框列的数据源。现在加载数据将在组合框中正确显示买入/卖出,并且对于新行,当您从下拉列表中选择一个值时,它将使用正确的位值填充您的基础数据源。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)