请问在下面的代码中:
                DataTable dt = ds.Tables["programdata"]; 
                DataRow dr; 
                for (int I=0;I<=dt.Rows.Count-1;I++) 
                { 
                  dr = dt.Rows[I]; 
                     
                    if (dr["ProgramType"].ToString()=="1") 
                    { 
                        dr["ProgramType"]= "tv"; 
                    } 
                }
 if 语句中的  dr["ProgramType"]= "tv";语法有误不,
写成上面的提示有误,但是写成下面的就OK
            dr["ProgramType"]= 111;
也就是说,赋值时只能是数字,不能是字符串,定义的DataRow dr 中dr 是什么类型啊? 
             

解决方案 »

  1.   

    dr["ProgramType"]= "tv"; 
    应该不会有编译时错误,只可能有运行时错误
    dr[]存储的是object类型,可以存储任何数据
      

  2.   

    to if 语句中的 dr["ProgramType"]= "tv";语法有误不,
    写成上面的提示有误,但是写成下面的就OK
    dr["ProgramType"]= 111;
    也就是说,赋值时只能是数字,不能是字符串,定义的DataRow dr 中dr 是什么类型啊?对于dr某个字段的赋值,有误或者正确都是运行时候进行检查的。所以你首先需要看看ds.Tables["programdata"]表中对于此字段的类型定义。
      

  3.   

    查一查你的表中的ProgramType这一列,,,,是什么数据类型...///如果是整形,则不能赋"tv"值.
      

  4.   

    dr[]应该有类型的,看你提取的数据库中ProgramType的类型
      

  5.   

    大哥, 这样子是不行的. 你先看看表里的Programtype字段是什么类型的.
    如果是number的, "tv"是字符串,怎么能赋值给数字字段呢?
    这里programtype的值应该对应一个存储programtype详细内容的附表. 通过此字段关联.
      

  6.   

    数据库中Programtype可能是number类型的
      

  7.   

    取决于DataTable被创建时,该列的字段类型.
      

  8.   

    要根据DataTable列的类型,如果是自己创建的DataTabel,并没有设置列类型,则不会出现这种错误