我们知道,Sql Server的数据类型 和 .net的数据类型并不匹配?比如 Sql Server中的bit类型,通过ado.net的Sql Provider 取回后变成了boolean类型,问题是,我能不能控制这个映射,比如说让它变为整数类型,我取回这个数据只是为了显示,不改写,这样的操作应该是安全的?这样我在DataGridView中(AutoGenerateColumns)显示这个列中就会显示成0,1了,而不是难看的Checkbox。一句话,我想在我的程序中显示的数据和 Sql Server中的查询工具显示的一模一样。大家能不能教教我,怎么做?
这个问题,大家看一下我的博客中的第一个WinForm程序(应该可以下载吧),前面给出的答案不够通用,我自己想了想,要么改数据,要么DataGridView手工生成Column。没什么方便的办法,在我的程序中,Sql语句是不能改的。SqlDataAdapter有个ReturnProviderSpecificTypes属性。我不知道返回来的值是什么?
DataGridView可以再后台处理你从数据库当中获取来的值,根据你从数据库中的值,你可以进行手动装换,将装换后的值绑定到DataGridView上面就可以了。
在CellFormatting事件中写。很方便的。
//DataGridView.Cell绘制
private void dgv_Product_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
{
if (e.RowIndex >= 0 && e.ColumnIndex == 8)
{
if (dgv_Product.Rows[e.RowIndex].Cells["类别性质"].Value.ToString() == "1")
e.Value = "产品";
else if (dgv_Product.Rows[e.RowIndex].Cells["类别性质"].Value.ToString() == "2")
e.Value = "库品";
}
}
查询的时候 case when 字段 then 1 else 0 end 即可