如果为空,显示为
There is no row at position 0. 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 异常详细信息: System.IndexOutOfRangeException: There is no row at position 0.

解决方案 »

  1.   

    我的代码是这样写的,怎么不对
    if(this.dg_Modify.SelectedItem.Cells[4].Text==null)
    {
      this.sw_AssetPepele.Text = "";
    }
    else 
    {
      this.sw_AssetPepele.Text = this.dg_Modify.SelectedItem.Cells[4].Text;
    }
      

  2.   

    System.IndexOutOfRangeException: There is no row at position 0.数组越界了吧?cells[3]?
      

  3.   

    SelectedIndexChanged事件内写的吗?你的cells[4]应该是第5列,因为缩印是从0开始算的,别搞错了。。
      

  4.   

    我在sql绑定的时候这样写不会错了,但是我想了解在程序里该怎么做
    select nvrAssetNo,nvrAssetName,isnull(nvrAssetUserNo,''),isnull(nvrAssetUserName,'') from AssetDeptBorrow_detail
      

  5.   

    可能是因为这列为空,if不能这样写
    if(this.dg_Modify.SelectedItem.Cells[4].Text==null)
    应该用isNull方法来判断其是否为空我在java中遇到过这样的问题,不知道在这里是不是这样的,但愿能帮上你的忙
      

  6.   

    试试
    if(this.dg_Modify.SelectedItem.Cells[4].Text=="")
      

  7.   

    谢谢楼上的,我想问下,怎么处理数据库一个字段为null或者为"",而要把这个字段的值付给一个label.text,怎么处理这个异常?
      

  8.   

    你如果是读取到datatable里面,那无论是NULL还是其他,它总是被格式化成空文本串,直接赋给控件,不会出错
    如果是读取到datareader,如果数据里面有NULL,读取的时候即出错.此时,在读取之前要先判断一个read[n]==null,然后再读取.
      

  9.   

    (this.dg_Modify.SelectedItem.Cells[4].Text==null ||this.dg_Modify.SelectedItem.Cells[4].Text.length<0)