我有一个 DataGrid ,其中填充了59行和列。我尝试将datagrid行插入SQL表,但是在行索引9或10上获取 DataGrid 单元格值时,出现System.NullReferenceException
错误。
这是我的代码:
try {
int creditor = DataGridImport.Columns.IndexOf(DataGridImport.Columns.FirstOrDefault(c => c.Header.ToString() == "creditor"));
int serialnumber = DataGridImport.Columns.IndexOf(DataGridImport.Columns.FirstOrDefault(c => c.Header.ToString() == "serialnumber"));
int fullname = DataGridImport.Columns.IndexOf(DataGridImport.Columns.FirstOrDefault(c => c.Header.ToString() == "fullname"));
int court = DataGridImport.Columns.IndexOf(DataGridImport.Columns.FirstOrDefault(c => c.Header.ToString() == "court"));
int totaloutstanding = DataGridImport.Columns.IndexOf(DataGridImport.Columns.FirstOrDefault(c => c.Header.ToString() == "totaloutstanding"));
int category = DataGridImport.Columns.IndexOf(DataGridImport.Columns.FirstOrDefault(c => c.Header.ToString() == "category"));
for (i = 0; i < DataGridImport.Items.Count; i++)
{
command.Parameters.AddWithValue("@serialnumber",(DataGridImport.Columns[serialnumber].getcellContent(DataGridImport.Items[i]) as TextBlock).Text);// ERROR HERE
command.Parameters.AddWithValue("@creditor",(DataGridImport.Columns[creditor].getcellContent(DataGridImport.Items[i]) as TextBlock).Text);
command.Parameters.AddWithValue("@fullname",(DataGridImport.Columns[fullname].getcellContent(DataGridImport.Items[i]) as TextBlock).Text);
command.Parameters.AddWithValue("@court",(DataGridImport.Columns[court].getcellContent(DataGridImport.Items[i]) as TextBlock).Text);
command.Parameters.AddWithValue("@totaloutstanding",(DataGridImport.Columns[totaloutstanding].getcellContent(DataGridImport.Items[i]) as TextBlock).Text);
command.Parameters.AddWithValue("@category",(DataGridImport.Columns[category].getcellContent(DataGridImport.Items[i]) as TextBlock).Text);
try
{
command.ExecuteNonQuery();
}
使用NullReferenceException
,循环在索引9或10(取决于窗口大小)处停止。
我意识到该代码适用于在屏幕上呈现的n个第一行,但其余行却得到空值。如果我将窗口最大化,则所有行都将显示在屏幕上,并且代码将成功运行。
以下是 DataGrid 属性:
<DataGrid Margin="10" Grid.Row="1" Name="DataGridImport" IsReadOnly="True" >
</DataGrid>
我不明白为什么我在窗口中未呈现的填充行上得到NullReferenceException
。