C#DataTable - 行的元素变为null

时间:2011-03-10 09:04:59

标签: c# datatable

我有一个最奇怪的错误 - 我的应用程序执行一个代码,导致将10行结果添加到DataTable,然后显示在Ultragrid上。
一旦进入~20次运行,就会发生以下情况:
1.第一行添加到数据表中:
DataRow drNew = dtResults.NewRow();
- 用值填充 -
dtResults.Rows.Add(drNew);
该行不为空,因为我在检查后有一个断点:if(drNew.IsNull(0)) 2.第二行以相同的方式添加,但添加后,以下if为真:
if(dtResults.Rows[0].IsNull(0))

知道这件事怎么会发生?

非常感谢。

修改 - 将标题更改为更准确,谢谢。

编辑2:

我试图抓住RowChanging和RowDeleting事件并检查它们是否为 dtResults.Rows[0].IsNull(0)e.Row.IsNull(0),但在第一行将其内容从值更改为空时,我无法捕获这些内容。

1 个答案:

答案 0 :(得分:3)

drNew.IsNull(0)不会测试 Row 是否为null,而是测试行的第一列中的数据是否为null。 (同样,drNew.IsNull(1)会检查第二列。)

请注意,您正在测试drNew.IsNull(0),然后是dtResults.Rows[0].IsNull(0)。这些可能不会引用相同的内容 - drNew是您要添加的行,Rows[0]是表中的第一行。我认为如果数据表的DefaultView应用了一个Sort,那么Row[0]不一定是你添加的第一个。