我在项目中用了一个datagridview控件,我要保存datagridview的数据时需要判断datagridview中的单元格是否全部输入数据,但是我在判断的时候出现了“未将该对象引为实例”的异常,求各位帮忙,附代码如下:
bool isnull = true;
            for (int i = 0; i < d.Rows.Count; i++)
            {
                for (int j = 0; j < d.Columns.Count-1; j++)
                {
                    if (d[j, i].Value.ToString().Trim() == null)
                    {
                        isnull = false;
                    }
                }
            }
就是在我的if中出错了。

解决方案 »

  1.   

    if (d[j, i].Value.ToString().Trim() == null)行列反了,,先行后列  你定义的 i 代表的是行 所以应该是
    d[i,j]
      

  2.   

    嗯 还有一个问题int j = 0; j < d.Columns.Count-1; j++这个Count-1 不需要-1  < 的话就是不包括最大的数  如果这样你就少判断一列了
      

  3.   

    if(string.IsNullOrEmpty(dataGridView1.Rows[i].Cells[j].Value.ToString()))
    {}
      

  4.   

    未将该对象引为实例
     不是报了异常么?
    如果这句 if (d[j, i].Value.ToString().Trim() == null)
    异常的话
     应该就是 d[j, i].越界了
    d[ d.Columns.Count-2,d.Rows.Count-1]应该是不存在的!
      

  5.   

    不存在
     他就没有Value值
    就是和这个异常了!
      

  6.   

    d[j, i].Value.ToString().Trim() == null这里有问题啊,应该d[i,j]并且不应该用==null,应该用string.IsNullOrEmpty(d[i, j].Value.ToString().Trim())方法,还有的就是列循环问题,你的循环会访问少了一列
      

  7.   

    if (d[j, i].Value.ToString().Trim() == null)
    这句话错了,你是用来判断单元格值是否为NULL,如果值为NULL的话,VALUE.ToString()就存在异常了,直接对象比较就可以了
    if((object)d[i,j].Vaule == null)
    {
    }
      

  8.   

    呵呵,首先称明我的行和列是没有反的,我是在winform下面编程,datagridview用下标来遍历的时候是先列后行的也就是说datagridview[j,i]没有反,至于d.Columns.Count-1,因为我最后一行是不需要判断的,因为我让datagridview允许添加行,所以最后一行永远是空值也不需要我保存的,所以把最后一行去挑,我出现的问题是当datagridview中某个单元格没有输入数据的时候就会无法判断
    d[j, i].Value.ToString().Trim() == null,即使是用了
    string.IsNullOrEmpty(d[i, j].Value.ToString().Trim())也是不行的!
      

  9.   

     if (d[j, i].Value.ToString().Trim() == null)
    换成:if (d[j, i].Value == null)
      

  10.   

    if (string.IsNullOrEmpty(Convert.ToString(d[i, j].Value)))
      

  11.   

    if (d[j, i].Value.ToString().Trim() == null)修改为
    if (d[j, i].Value == null)我遇到过,我也知道你没有反