C#中用datagridview显示ACCESS数据库中的“是不是”字段时总是出错!!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#中用datagridview显示ACCESS数据库中的“是不是”字段时总是出错!!相关的知识,希望对你有一定的参考价值。

显示的错误提示为:System.FormatException: 无法将值 "" 转换为类型 "Boolean"。
以下是我的代码,请教要如何才能消除错误:
//连接ACCESS数据库略
//表Person中含有“婚否”这么一个逻辑字段

OleDbDataAdapter oleAdap = new OleDbDataAdapter(select * from Person,oleCon);
DataSet ds = new DataSet();
oleAdap.Fill(ds,"Person");
this.dataGridView1.DataSource = ds.Tables[0].DefaultView;

//如果dataGridView1的窗口调节得比较小的话,没有显示出该逻辑字段时就没有错误提示,但是拖动滚动条到看见该字段时就会提示错误信息!!!

参考技术A 是否字段设置为bit,不是0就是1。 1代表true、0代表false 数据库存0/1 读出来就是False/True 这样就可以转了。 "" 转换为类型 "Boolean",这个当然不行,如果实在希望初始化一个时间类型,就用DateTime d = new datetime(),到时候在判定d是否等于new datetime()就行了,new datetime()是个固定值。 参考技术B 数据库定义好像需要时bit然后查出来的时候使用如下进行判断!类似于
string s=datagridview.Rows[0][0].ToString().Trim() == 0 ? "否" : "是"; (0为否,1为是)
参考技术C string s=datagridview.Rows[0][0].ToString().Trim() == "False" ? "否" : "是";

c# datagridview 显示行数

datagridview能不能在最左边显示行数,就像EXCEL表那样?

datagridview默认属性是不能设置显示行号的,可以用rowpostpaint事件中绘制。给你个例子参考下:
private void datagridview1_RowPostPaint(object sender,DataGridViewRowPostPaintEventArgs e)

using(SolidBrush b=new SolidBrush(datagridview1.RowHeadersDefaultCellStyle.ForeColor))
int linen=0;
linen=e.RowIndex+1;
string line=linen.ToString();
e.Graphics.DrawString(line,e.InheritedRowStyle.Font,b,e.RowBounds.Location.X,e.RowBounds.Location.Y+5);
SolidBrush B=new SolidBrush(Color.Red);

参考技术A 你可以自己取得行数 显示出来啊
应该是datagridvidw.Rows.Count吧,返回一个int型
参考技术B 不想显示主键的话,自己可以随便定义显示方式与内容的呀

以上是关于C#中用datagridview显示ACCESS数据库中的“是不是”字段时总是出错!!的主要内容,如果未能解决你的问题,请参考以下文章

C#连接ACCESS数据库,显示到dataGridView表格

c# dataGridView对access数据库的增加 修改 删除

C# winform中,怎样dataGridView1选中一行access数据,然后再textbox中显示

C#怎样把access数据库中的数据刷新一下显示在DataGridView中

C# 窗体的DataGridView分页

使用 C# 使用 CSV 文件填充 DataGridView,并使用结果更新 Access 数据库