繁体   English   中英

从DataGrid读取时出现错误“对象引用未设置为对象的实例”

[英]Error “Object Reference not set to an Instance of an object” on read from DataGrid

好的,所以我做了一个快速测试,以查看我的代码是否已设置为可以从DataGrid正确读取,并且可以,但是一旦完成读取,我将收到错误消息"Object reference not set to an Instance of an object"并且我不确定它指的是什么。 是因为rows到达DataGrid的末尾之后循环仍继续吗?

public static void UploadFromExtrernalSource(PlantAreaCode_CreateView PACCreate)
{
    // For each row in the DataGrid, and for each column, stores the information in a string.
    for (int rows = 0; rows < PACCreate.dataGridView1.Rows.Count; rows++)
    {
        for (int col = 0; col < PACCreate.dataGridView1.Rows[rows].Cells.Count; col++)
        {
            string value = PACCreate.dataGridView1.Rows[rows].Cells[col].Value.ToString();
            Console.WriteLine(value + ",");
        }
    }
}

编辑:同样,当我打印到控制台时,它会在新行上打印每个值。 为什么?

问题1:您正在尝试将其中一个单元格的null值转换为String

解决方案1:在将单元格值转换为String之前,请先进行空检查。

问题2:您正在使用Console.WriteLine()方法显示每个单元格值,以便在新的Row/Line打印每个单元格值。

解决方案2:您需要使用Console.Write()方法而不是Console.WriteLine()来打印单元格值,并且在打印了给定行中的所有单元格值之后,您需要使用Console.WriteLine()来打印新行。

建议:您不需要每次在for循环中声明字符串变量value ,因此可以将字符串变量声明移出循环。

尝试这个:

public static void UploadFromExtrernalSource(PlantAreaCode_CreateView PACCreate)
{
    // For each row in the DataGrid, and for each column, stores the information in a string.
    String value = String.Empty;
    for (int rows = 0; rows < PACCreate.dataGridView1.Rows.Count; rows++)
    {
        for (int col = 0; col < PACCreate.dataGridView1.Rows[rows].Cells.Count; col++)
        {
            if(PACCreate.dataGridView1.Rows[rows].Cells[col].Value!=null)
            { 
              value=PACCreate.dataGridView1.Rows[rows].Cells[col].Value;
              Console.Write(value + ","); 
            }
            else 
            { value=String.Empty; }
        }
        Console.WriteLine();//it prints a new line 
    }
}

嘿,我认为您正在尝试将单元格的空值转换为字符串。 尝试在将null转换为字符串之前检查null,希望对您有所帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM