c# net windowsform-DataTable.Rows.Add(item)抛出错误:“值不能为 null。参数名: key”

问题描述

DataTable.Rows.Add(item)抛出错误:“值不能为 null。参数名: key”

界面功能是选则一个功能范围,然后点击新增,在界面列表中新增一行数据。
错误出现场景:选择同一个功能范围,点击新增后,代码会执行DataTable.Rows.Add(item)这句,大约有20%的概率出现如题错误。具体错误信息如下:
捕捉到 System.ArgumentNullException
HResult=-2147467261
_message=值不能为 null。
HResult=-2147467261
IsTransient=false
Message=值不能为 null。
参数名: key
Source=mscorlib
ParamName=key
StackTrace:
在 System.Collections.Generic.Dictionary2.FindEntry(TKey key)
在 System.Collections.Generic.Dictionary
2.get_Item(TKey key)
在 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.b__4(DataViewListener listener, ListChangedType type, DataRow row, Boolean track)
在 System.Data.Listeners1.Notify[T1,T2,T3](T1 arg1, T2 arg2, T3 arg3, Action4 action)
在 System.Data.Index.MaintainDataView(ListChangedType changedType, Int32 record, Boolean trackAddRemove)
在 System.Data.Index.InsertRecord(Int32 record, Boolean fireEvent)
在 System.Data.Index.ApplyChangeAction(Int32 record, Int32 action, Int32 changeRecord)
在 System.Data.Index.RecordStateChanged(Int32 record, DataViewRowState oldState, DataViewRowState newState)
在 System.Data.DataTable.RecordStateChanged(Int32 record1, DataViewRowState oldState1, DataViewRowState newState1, Int32 record2, DataViewRowState oldState2, DataViewRowState newState2)
在 System.Data.DataTable.SetNewRecordWorker(DataRow row, Int32 proposedRecord, DataRowAction action, Boolean isInMerge, Boolean suppressEnsurePropertyChanged, Int32 position, Boolean fireEvent, Exception& deferredException)
在 System.Data.DataTable.InsertRow(DataRow row, Int64 proposedID, Int32 pos, Boolean fireEvent)
在 System.Data.DataRowCollection.Add(DataRow row)
InnerException:

跟踪代码结果:
item是datatable.row类型。
(不知道怎么放图片)在正常与错误情况下,item.ItemArray有内容,部分为空字符串,内容除时间不一样之外,其余均相同。正常时正常添加,错误时,执行到add方法报错,捕捉错误后,item.ItemArray中的值都变成空,类型为System.DBNull.

时间: 2024-12-31 12:23:24

c# net windowsform-DataTable.Rows.Add(item)抛出错误:“值不能为 null。参数名: key”的相关文章

《从零开始学Swift》学习笔记(Day54)——抛出错误

原创文章,欢迎转载.转载请注明:关东升的博客  能放到try后面调用函数或方法都是有要求的,他们是有可能抛出错误,在这些函数或方法声明的参数后面要加上throws关键字,表示这个函数或方法可以抛出错误. 声明抛出错误方法示例代码如下: //删除Note记录方法 func remove(model: Note) throws { ... } //查询所有记录数据方法 func findAll() throws -> [Note] { ... } 上述代码remove(_:)方法没有返回值,thro

当我添加对方为好友的时候,抛出一个异常xmmpconnectionmanager is null,这是什么原因导致的呢

问题描述 解决方案 logcat的报错贴出来看看解决方案二:这是报错信息解决方案三:有v4包吗解决方案四:有解决方案五:http://bbs.csdn.net/topics/380244632?page=1看下这个

【紧急】水晶报表打印抛出错误:指定的打印机无效。

问题描述 cr.PrintOptions.PrinterName=printerName;cr.PrintToPrinter(nCopies,collated,startPageN,endPageN); 用本机的AdobePDF打印成功..但是用公司的打印机会报错..打印机名称:KONICAMINOLTA350/250/200VXL端口:10.173.235.5是不是要在哪里设置个IP地址才行.?我在printerName那里赋予的值是KONICAMINOLTA350/250/200VXL(报错

为什么一个datatable中两次使用 car.Rows.Add(newRow);发现添加的数据不在同一行。

问题描述 car.Columns.Add("线路名称",typeof(System.String));//car.Columns.Add("线路宽度",Type.GetType("System.String"));car.Columns.Add("序号(必填)",Type.GetType("System.String"));car.Columns.Add("纬度",typeof(Syst

如何更合理的利用Java中的异常抛出

以前,我觉得编程语言中最让人不解的部分就是它能够创建错误.当时我对Java语言中的throw关键字的第一反应就是"啊,这也太傻了,为什么我们想要引发一个错误(error)?"我觉得错误是我的敌人,应当避免的,所以创建错误是毫无用处甚至是危险的.我认为在JavaScript中加入这样的关键字是多此一举.但随着我编程经验的丰富,我逐渐变成了throw我的error粉丝.合理的使用它们会让对代码的调试和维护大大简化. 在编程的时候,Error通常出现在不期望的事情发生时.可能是传入函数的参数

窥探Swift编程之错误处理与异常抛出

在Swift 2.0版本中,Swift语言对其错误处理进行了新的设计,当然了,重新设计后的结果使得该错误处理系统用起来更爽.今天博客的主题就是系统的搞一下Swift中的错误处理,以及看一下Swift中是如何抛出异常的.在编译型语言中,错误一般分为编译错误和运行时错误.我们平时在代码中处理的错误为运行时错误,我们对异常进行处理的操作的目的是为了防止程序出现错误而导致其他的副作用,比如用户数据未保存等等. 在今天的博客中,先给出主动产生异常的几种情况,然后再给出如何处理被动异常. 一.主动退出程序的

求解调用微软MODI进行OCR识别抛出“OCR running error”问题,求指教!

问题描述 我现在可以进行OCR识别,但有一个问题:当我选择的识别区域较小(或者说文字较少)时,抛出错误信息"OCRrunningerror",不知道是什么原因,有人说是电脑因素(我的开发环境:VS2008+Office2007+sp2补丁),有的说截取图像要作处理,不知道原因为何..我想要的效果是:即便选择一个汉字或数字也可以进行识别!我的识别关键代码://创建一个临时文件stringstrFileName=string.Format("{0:yyyy_MM_dd_HH_mm

PHP 的异常处理、错误的抛出及回调函数等面向对象的错误处理方法_php技巧

异常处理用于在指定的错误(异常)情况发生时改变脚本的正常流程.这种情况称为异常. PHP 5 添加了类似于其它语言的异常处理模块.在 PHP 代码中所产生的异常可被 throw 语句抛出并被 catch 语句捕获.需要进行异常处理的代码都必须放入 try 代码块内,以便捕获可能存在的异常.每一个 try 至少要有一个与之对应的 catch.使用多个 catch 可以捕获不同的类所产生的异常.当 try 代码块不再抛出异常或者找不到 catch 能匹配所抛出的异常时,PHP 代码就会在跳转到最后一

窥探Swift编程中的错误处理与异常抛出_Swift

在Swift 2.0版本中,Swift语言对其错误处理进行了新的设计,当然了,重新设计后的结果使得该错误处理系统用起来更爽.今天的主题就是系统的搞一下Swift中的错误处理,以及看一下Swift中是如何抛出异常的.在编译型语言中,错误一般分为编译错误和运行时错误.我们平时在代码中处理的错误为运行时错误,我们对异常进行处理的操作的目的是为了防止程序出现错误而导致其他的副作用,比如用户数据未保存等等. 在今天的文章中,先给出主动产生异常的几种情况,然后再给出如何处理被动异常. 一.主动退出程序的几种