我有一个表,它有一个列Xyz
,它bit
在 SQL Server 2008 中具有数据类型。
我通过数据适配器从表中获取值,并将其存储在 a 中DataSet
,aDataGridView
将显示来自DataSet
在 gridview 中,对于 column Xyz
,显示带有/不带有刻度的复选框,但我想将其显示为作为文本而不是复选框的买入/卖出。
我有一个表,它有一个列Xyz
,它bit
在 SQL Server 2008 中具有数据类型。
我通过数据适配器从表中获取值,并将其存储在 a 中DataSet
,aDataGridView
将显示来自DataSet
在 gridview 中,对于 column Xyz
,显示带有/不带有刻度的复选框,但我想将其显示为作为文本而不是复选框的买入/卖出。
您可以通过 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";
}
}
}
如果您的网格需要可编辑,请使用显示成员和值成员设置表示您的买入/卖出值的数据表。将其绑定为组合框列的数据源。现在加载数据将在组合框中正确显示买入/卖出,对于新行,当您从下拉列表中选择一个值时,它将使用正确的位值填充您的基础数据源。