建议写程序的时候将前端和后端分开考虑:
进行数据操作的时候,每次都使用datagridview的数据源,而不要从该控件的cell.value来访问。
个人觉得,这样做可以使你的程序层次更清晰。
那我如何取用datagridview数据源?代码怎么写?
@巴索罗缪库玛:
datatable dtSource=(datatable)datagridview.datasource;
以后需要访问或者修改表格中的数据,直接使用dtSource的数据就可以了。
这样子,数据层和数据展示层就可以分离,你只需专注于dtSource的数据处理即可。
@ChaoSimple: 有错误:无法将类型为“System.Data.DataSet”的对象强制转换为类型“System.Data.DataTable”,怎么办啊?
@巴索罗缪库玛:
你的数据源是DataSource,当然无法转换成DataTable啊,你选择好要用的那张表就可以了么。
比如:
dataset dsSource=(dataset)datagridview.datasource;
datatable dtSource=dsSource.tables[0];
注意:
tables[]里面的索引是你要使用的表的索引,不要直接的模仿写0。
@ChaoSimple: 那如果我有test1,test2,test3三张表,那就是tables[0],tables[1],tables[2]了吧?
@巴索罗缪库玛:
对的,没错,通过数字索引访问或者表名访问都可以。
建议你还是花时间看点MSDN,一些基础点的问题上面都有解答。
this.dataGridView2.Rows[i].Cells[0].Value有值么?
datagridview控件从sql数据库中读出来的表,有值的呀
datagridview控件从sql数据库中读出来的表,有值的呀,那如果我用datatable来写的话怎么获取test表第一列的值呢?
@巴索罗缪库玛: dt.Rows[0][0]
@sinhbv: 能不能写个完整的?datatable dt = new datatable();之后怎么写啊?
调试一下,监视一下你的this.dataGridView2.Rows[i].Cells[0].Value看看?
应该是你的字段的值(Value)是一个DBNull(或null),你可以使用数据格式化(string.Format)转换,或者调用Convert.ToString转换。