解决方案 »

  1.   

    你先看看row[1]的值,肯定是不符合转换规则
      

  2.   

    row【1】的值就是上图第三张中的true 该列类型是system.boolean
      

  3.   

    你写的不是row[1],是row[L]啊
    只有row[1]里面是true,其他都是字符串啊
      

  4.   

    确实是row[1],只是我那个字体看着像L
      

  5.   

    try
    {
          convertToBool(row[1]);
    }
    catch(exception ex)
    {}
    这样可否
      

  6.   

    还有,既然row[1]里面本来就是bool类型,就不要强制转换了啊
    row[1]不需要转换,而其他的转换了也没用
    所以这个强制转换完全多余
      

  7.   

    直接用不了 报错是无法将object转成bool
      

  8.   

    你的是datatable,datatable分行和列啊
    row[1]是第二行,不是一个值,如何转成bool??
    不是应该row[0][1]么
      

  9.   

    另外 你上次给我解答的那个绑定datatable到datagridview的帖子,我结贴了。但是今天发现当datatable很大时,是不是可以考虑只把新加入的数据刷新到datagridview
      

  10.   

     DataRow row = dtSignalInfo.NewRow();
      

  11.   

    如果你确定之前的值都不会变,而只是有新行加入,循环datatable.rows.add就行了
      

  12.   

    所以你这个newrow里,是空的吧
    不是应该获取datarow row=dt.rows[1];这样么
      

  13.   

    如果你确定之前的值都不会变,而只是有新行加入,循环datatable.rows.add就行了之前就是考虑更新太快,所以没有在循环里面直接加到绑定的datatable里面。那这个循环add是要添加在定时器里?
      

  14.   

    所以你这个newrow里,是空的吧
    不是应该获取datarow row=dt.rows[1];这样么no,不是空的,中间还有其他代码,是空的话就不会出现调试的那个值了
      

  15.   

    除非数据行数固定,这样就只更新值,不改变行数.
    如果说你的数据每次来了,都是在新增行,而不改变之前的值,那timer里就只比较2个datatable行数的差异,循环添加行就好了
      

  16.   

    除非数据行数固定,这样就只更新值,不改变行数.
    如果说你的数据每次来了,都是在新增行,而不改变之前的值,那timer里就只比较2个datatable行数的差异,循环添加行就好了这样会不会很耗时
      

  17.   

    不能跟踪? 是否先看一眼,确认一下row[1]是什么值?
    转换很容易,与很多方式,可是如果你拿到的数据都不是你要的,那有什么意义
      

  18.   

    我想知道报错的时候row[1]里是什么值