在将新行添加到DataTable
. 它不会每次都发生,但是在运行应用程序时,我得到空引用异常,而没有找到空对象。
这是代码:
首先清除DataTable的行列:
dtLibraries.Rows.Clear();
dtLibraries.Columns.Clear();
dtLibraries.Columns.Add("Col1");
dtLibraries.Columns.Add("Col2");
dtLibraries.Columns.Add("Col3");
dtLibraries.Columns.Add("Col4");
dtLibraries.Columns.Add("Col5");
dtLibraries.Columns.Add("Col6");
dtLibraries.Columns.Add("Col7");
dtLibraries.Columns.Add("Col8");
dtLibraries.Columns.Add("Col9");
然后读取另一个 DataTable 并将数据写入该表:
for (int s = 0; s <= dttemp.Rows.Count - 1; s++)
{
dttemp1.Clear();
dttemp1 = business.GetOutputLibraries("SimObjectOutputRequestSet",
dttemp.Rows[s].ItemArray[2].ToString(),
dttemp.Rows[s].ItemArray[1].ToString(), dttemp.Rows[s].ItemArray[0].ToString());
for (int j = 0; j <= dttemp1.Rows.Count - 1; j++)
{
DataRow dr = dtLibraries.NewRow();
dr["Col1"] = dttemp1.Rows[j].ItemArray[0].ToString();
dr["Col2"] = dttemp1.Rows[j].ItemArray[1].ToString();
dr["Col3"] = dttemp1.Rows[j].ItemArray[2].ToString();
dr["Col4"] = dttemp.Rows[s].ItemArray[0].ToString();
dr["Col5"] = dttemp.Rows[s].ItemArray[2].ToString();
dr["Col6"] = dttemp.Rows[s].ItemArray[1].ToString();
dr["Col7"] = cmbObject.Text.ToString();
dr["Col8"] = cmbLibraryType.Text;
dr["Col9"] = cmbLibrarySubType.Text;
dtLibraries.Rows.Add(dr); /// Exception occurs on this line
}
}
堆栈跟踪:
at System.Data.NameNode.Eval(DataRow row, DataRowVersion version)
at System.Data.BinaryNode.EvalBinaryOp(Int32 op, ExpressionNode left, ExpressionNode right, DataRow row, DataRowVersion version, Int32[] recordNos)
at System.Data.BinaryNode.Eval(DataRow row, DataRowVersion version)
at System.Data.DataExpression.Invoke(DataRow row, DataRowVersion version)
at System.Data.Index.AcceptRecord(Int32 record, IFilter filter)
at System.Data.Index.ApplyChangeAction(Int32 record, Int32 action, Int32 changeRecord)
at System.Data.Index.RecordStateChanged(Int32 record, DataViewRowState oldState, DataViewRowState newState)
at System.Data.DataTable.RecordStateChanged(Int32 record1, DataViewRowState oldState1, DataViewRowState newState1, Int32 record2, DataViewRowState oldState2, DataViewRowState newState2)
at System.Data.DataTable.SetNewRecordWorker(DataRow row, Int32 proposedRecord, DataRowAction action, Boolean isInMerge, Boolean suppressEnsurePropertyChanged, Int32 position, Boolean fireEvent, Exception& deferredException)
at System.Data.DataTable.InsertRow(DataRow row, Int64 proposedID, Int32 pos, Boolean fireEvent)
at System.Data.DataRowCollection.Add(DataRow row)