积极答复者
WinForm中DataGridView录入一行进入下一行时会清空回到初始状态

问题
答案
-
你好:)
因为你在DataSet强类型数据集中已经设置了主外键映射,这也就意味着DataSet不允许你插入非主键范围的其它值(包括Null)。所以e.Row.Cells[2].Value =DBNull。Value绝对不可以!
至于说为什么你在Sql Management Studio中可以,那是因为没有在Sql中创建强制的主外键关系。其实你的这种设置是错误的。原因很简单——外键如果不属于主键的某个值,那个这个数据就是冗余的,也就会被忽略了。
如果你有其它意见或私下交流,请发送邮件到:maledong@qq.com;或者请
下载MSDN桌面工具(Vista,Win7)
下载Technet桌面小工具(Vista,Win7)
慈善点击,点击此处- 已标记为答案 Paul Zhou 2011年6月6日 5:46
全部回复
-
您好:)
你的DataGridView在“空的时候”有没有绑定数据源什么的?你是不是直接把一个DataGridView拖拽到WinForm上?如果是这样的且没有绑定数据集,应该不会发生这样的情况。
如果可以的话,请贴图我们看看实际情况,并且附上源码。谢谢。
如果你有其它意见或私下交流,请发送邮件到:maledong@qq.com;或者请QQ我
下载MSDN桌面工具(Vista,Win7)
下载Technet桌面小工具(Vista,Win7)
慈善点击,点击此处 -
你好:)
您给我的代码我已经仔细查看运行。我发现你的外键已经和主键设置了“主外键”关系了(在TableAdapter)。这就意味着外键不能为空,且必须是主键映射的某一个成员。所以你的默认值应该设置成Code的某个成员。
比如:
private void dataGridView1_DefaultValuesNeeded(object sender, DataGridViewRowEventArgs e)
{//请注意这里!!!
e.Row.Cells[2].Value = "Code1";//第4列checkbox填充false
e.Row.Cells[4].Value = false;
}
如果你有其它意见或私下交流,请发送邮件到:maledong@qq.com;或者请QQ我
下载MSDN桌面工具(Vista,Win7)
下载Technet桌面小工具(Vista,Win7)
慈善点击,点击此处 -
你好:)
因为你在DataSet强类型数据集中已经设置了主外键映射,这也就意味着DataSet不允许你插入非主键范围的其它值(包括Null)。所以e.Row.Cells[2].Value =DBNull。Value绝对不可以!
至于说为什么你在Sql Management Studio中可以,那是因为没有在Sql中创建强制的主外键关系。其实你的这种设置是错误的。原因很简单——外键如果不属于主键的某个值,那个这个数据就是冗余的,也就会被忽略了。
如果你有其它意见或私下交流,请发送邮件到:maledong@qq.com;或者请
下载MSDN桌面工具(Vista,Win7)
下载Technet桌面小工具(Vista,Win7)
慈善点击,点击此处- 已标记为答案 Paul Zhou 2011年6月6日 5:46