语句dr["mFilesID"] = DBNull.Value 赋值DBNull .Value后DataGridView.SelecteRows.Count数量减少,如下:
for (int i = 0; i < DataGridView.SelecteRows.Count; i++) { string mid = DataGridView.SelectedRows[i].Cells["mID"].Value.ToString(); DataRow dr = DataTable.Rows.Find(mid); dr["Relation"] = null; dr["mFilesNo"] = null; dr["mFilesID"] = DBNull.Value; } /pre> mFilesID是数据表的外键。注释掉dr["mFilesID"] = DBNull.Value;这句就没问题了!想请问这到底是什么原因啊? 还想请教的是,mFilesID为int型,怎么给它赋null值?直接=null程序不能通过。
—- 10分
dr[“Relation”] = DBNull.Value;
—- 5分
dr[“mFilesID”] 列类型是int的 应该不支持 可空类型(int?)的。 给它改成0,在显示的时候判断如果等于0 就显示为空。
—-
这个可以设置,但是会导致DataGridView.SelecteRows.Count数量减少,循环出现异常!
—- 35分
倒着找看看
for (int i = DataGridView.SelecteRows.Count-1; i>=0; i–)
—-
这个问题倒是不难解决,目前我是用倒序循环做的!就是感觉有点奇怪,为什么mFilesID一旦赋值,就会减少SelecteRows.Count的数量!
—-
谢谢版主热心解答!我目前使用这种方式做的,采用倒叙循环没问题。
大概知道是什么原因了,因为当前表是关系表,数据显示是有字段条件值的。我修改了数据源的字段条件值,依据约束,关系表直接过滤掉了不符合条件的数据,从而导致前台控件数据行的同步减少。
—-
顺便说一下,在datatable中int型字段赋值NULl,就是dr[“Relation”] = DBNull.Value,是可以正确保存到数据库的。我出现的问题主要就是因为控件绑定的是关系表而不是实体表。