从datagridview读取到列表并添加到另一个datagridview

时间:2014-05-09 12:52:47

标签: c# winforms datagridview

您好我正在尝试从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);
        }
    }

1 个答案:

答案 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...
};