您好我正在尝试从datagridview读取列表。在此,datagridview中的每一行都作为对象添加到列表中。我正在读取从第一个datagridview到对象列表的所有数据,然后我将通过单击按钮在第二个datagridview中显示所有这些记录。这是我的代码,它给了我错误对象引用没有设置为对象的实例。 谁能纠正这个? 这是我的代码..
List<ClsOBJ> list1 = new List<ClsOBJ>();
private void button2_Click(object sender, EventArgs e)
{
try
{
foreach (DataGridViewRow row in dataGridView1.Rows)
{
ClsOBJ userobj = new ClsOBJ();
userobj.username=dataGridView1.Rows[row.Index].Cells[0].Value.ToString();
userobj.userid=dataGridView1.Rows[row.Index].Cells[1].Value.ToString();
list1.Add(userobj);
}
BindingSource binding = new BindingSource();
binding.DataSource = list1;
dataGridView2.DataSource = binding;
MessageBox.Show("Added");
}
catch(Exception xx)
{
MessageBox.Show(xx.Message);
}
}
答案 0 :(得分:0)
首先:哪一行给你例外?
第二:摆脱&#39; try-catch&#39;暂时抛出异常时,将光标放在有问题的语句中的每个属性名称上。找出哪个值是&#39; null&#39;
第三: 乍一看,这就是错误:
dataGridView1.Rows[row.Index].Cells[0].Value.ToString();
如果单元格的值为null,则在其上调用 ToString()将引发异常。
此外,您的DataGridView是否将 AllowUserToAddRows 设置为 true (顺便说一下,它是默认设置)?如果是这样,那么 dataGridView1.Row [dataGridView1.NewRowIndex] 中包含空值。
您可以检查该行是否不是NewRow:
if(!dataGridView1.Rows[row.Index].IsNewRow)
{
// do something...
};