我有一个表有一个列Xyz,它在SQL Server 2008中有位数据类型.
我通过数据适配器从表中获取值,并将其存储在DataSet中,DataGridView将显示DataSet中的内容
在gridview中,对于列Xyz,会显示带/不带勾号的check_box但我想将其显示为买/卖作为文本而不是复选框.
最佳答案 您可以通过2种方式之一处理它.
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";
}
}
}
如果您的网格需要可编辑,请使用displaymember和valuemember设置表示您的Buy / Sell值的DataTable.将其绑定为组合框列的数据源.现在加载数据将在组合框中正确显示Buy / Sell,对于新行,当您从下拉列表中选择一个值时,它将使用正确的位值填充基础数据源.