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