2011-03-10 59 views
0

我有最奇怪的錯誤 - 我的應用程序執行一個代碼,導致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))C#DataTable - 行元素變爲空

任何想法如何發生這件事?

非常感謝。

編輯 - 將標題更改爲更準確,謝謝。

編輯2:

我試圖趕上RowChanging和RowDeleting事件,並檢查它們內部是否
dtResults.Rows[0].IsNull(0)e.Row.IsNull(0),但我不能趕上那些在當時的第一行改變其內容從值到空值。

+0

我不知道這是否與你的問題有關(可能不是),但是'drNew.IsNull(0)'和'dtResults.Rows [0] .IsNull(0)'不會,通過更多的暗示,檢查* row *是否爲空,它檢查指定列索引處的值是否爲null。這是一個非常大的差異。 http://msdn.microsoft.com/en-us/library/chk182xa.aspx – 2011-03-10 09:13:05

回答

3

drNew.IsNull(0)不測試是否爲空,是測試行的第一列中的數據是否爲空。 (同樣,drNew.IsNull(1)會檢查第二列)。

請注意,您正在測試drNew.IsNull(0),然後是dtResults.Rows[0].IsNull(0)。這些可能不是指相同的東西 - drNew是您添加的行,而Rows[0]是表中的第一行。我認爲如果數據表的DefaultView有一個排序適用於它,那麼Row[0]不一定是你添加的第一個。

+0

編輯標題,謝謝。我的問題是,第一行有一個值,另一個是空值。我正在檢查drNew和表格,因爲我想查看值變爲空的地方。 – Noich 2011-03-10 09:28:58

+0

你確定行[0]每次都返回同一行嗎?如果您的DataTable正在排序,它可能是不同的行。另一種可能性是別的東西正在改變表中的值。如果你的表綁定到UI中的網格,那麼這可能是罪魁禍首。 – codeulike 2011-03-10 10:42:44

+0

沒有排序,並且每次都缺少同一行。我不知道如何找到更多的表格變化。我嘗試過將它包裝在'set'中,如果該值爲空行,則中斷,但不起作用。 – Noich 2011-03-10 10:47:29