首页 新闻 会员 周边

datatable clear导致异常

0
悬赏园豆:50 [已关闭问题] 关闭于 2013-08-09 21:13

问题现象:

  对datatable做清空动作出现异常,异常记录如下,

 

异常堆栈:

System.ArgumentNullException: 值不能为空。
参数名: key
在 System.ThrowHelper.ThrowArgumentNullException(ExceptionArgument argument)
在 System.Collections.Generic.Dictionary`2.FindEntry(TKey key)
在 System.Data.DataView.ResetRowViewCache()
在 System.Data.DataView.MaintainDataView(ListChangedType changedType, DataRow row, Boolean trackAddRemove)
在 System.Data.DataViewListener.MaintainDataView(ListChangedType changedType, DataRow row, Boolean trackAddRemove)
在 System.Data.Index.<>c__DisplayClass5.<MaintainDataView>b__4(DataViewListener listener, ListChangedType type, DataRow row, Boolean track)
在 System.Data.Listeners`1.Notify[T1,T2,T3](T1 arg1, T2 arg2, T3 arg3, Action`4 action)
在 System.Data.Index.MaintainDataView(ListChangedType changedType, Int32 record, Boolean trackAddRemove)
在 System.Data.Index.Reset()
在 System.Data.DataTable.ResetInternalIndexes(DataColumn column)
在 System.Data.DataTable.Clear(Boolean clearAll)
在 System.Data.DataTable.Clear()

相关代码

----
GoldRT.Tables[3].PrimaryKey = new DataColumn[] { GoldRT.Tables[3].Columns["a"], GoldRT.Tables[3].Columns["b"], GoldRT.Tables[3].Columns["c"], GoldRT.Tables[3].Columns["d"] }; //设置主键 当有重复数据时 合并时会自动丢弃

---

lastdv = GoldRT.Tables[3].DefaultView;

--------

GoldRT.Tables[3].Clear();
GoldRT.Tables[3].Merge(newDataSet.Tables[3]);

jizh的主页 jizh | 初学一级 | 园豆:104
提问于:2013-07-30 11:51
< >
分享
所有回答(4)
0

所有表中的所有行都被移除。 如果表中有任何将使子行孤立的强制子关系,则生成异常。

差生 | 园豆:3 (初学一级) | 2013-07-30 12:14

能否详细说明一下?

支持(0) 反对(0) jizh | 园豆:104 (初学一级) | 2013-07-30 13:40
0

表被锁

xiao3er | 园豆:207 (菜鸟二级) | 2013-07-30 12:55

从哪个查看到是被锁吗?

支持(0) 反对(0) jizh | 园豆:104 (初学一级) | 2013-07-30 13:42
0

GoldRT.Tables.Count是多少呢

Yu | 园豆:12980 (专家六级) | 2013-07-30 13:11

4

总4个表

支持(0) 反对(0) jizh | 园豆:104 (初学一级) | 2013-07-30 14:10

@jizh: 查查这块吧

GoldRT.Tables[3].PrimaryKey = new DataColumn[] { GoldRT.Tables[3].Columns["a"], GoldRT.Tables[3].Columns["b"], GoldRT.Tables[3].Columns["c"], GoldRT.Tables[3].Columns["d"] }; 

看看那个Columns[...]为null

支持(0) 反对(0) Yu | 园豆:12980 (专家六级) | 2013-07-31 10:34

@Yu: 

感谢回复,已经确认这些列无null情况

支持(0) 反对(0) jizh | 园豆:104 (初学一级) | 2013-07-31 20:23

@jizh: 贴多点码吧

支持(0) 反对(0) Yu | 园豆:12980 (专家六级) | 2013-07-31 20:56
0

GoldRT.Tables[3].PrimaryKey = new DataColumn[] { GoldRT.Tables[3].Columns["a"], GoldRT.Tables[3].Columns["b"], GoldRT.Tables[3].Columns["c"], GoldRT.Tables[3].Columns["d"] }; //设置主键 当有重复数据时 合并时会自动丢弃??也许是这些字段中有不止一个空值,可以看看~~空值也算重复,而主键是唯一的

Elaine00 | 园豆:294 (菜鸟二级) | 2013-07-31 16:58

感谢回复

已经确认数据没有空或null情况。其实newDataSet.Tables[3]只有一条数据

支持(0) 反对(0) jizh | 园豆:104 (初学一级) | 2013-07-31 20:24

@jizh: 恩~~这样看真是看不出什么问题,如果不介意的话,可以截取那个出错的项目那个错误部分代码让我调试下?

支持(0) 反对(0) Elaine00 | 园豆:294 (菜鸟二级) | 2013-07-31 21:59
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册