如何修改DataTable某一行中某一列的内容?

时间:2020-12-19 09:54:12
已经得到DataTable dt = ...
我想修改其中一行中一列的值,
dt.Rows[1][2] = "aaaa";
可为什么总为报错??

33 个解决方案

#1


两个情况会出错.
1 行和列不存在
自己判断索引是否在范围内
2 行的数据类型不对
DataTabke.Columns 是有数据类型的.
可以考虑使用Convert.ChangeType 来转换

#2


你的代码是没有错.

看看是不是数据类型不对应的原因.

还有:报什么错贴出来

#3


1楼都说了,无非就这两个问题

#4


你光说报错了 报的什么错了 贴出来 晕... 什么错都不知道  怎么替你分析

#5


引用 1 楼 zgke 的回复:
两个情况会出错.
1 行和列不存在
自己判断索引是否在范围内
2 行的数据类型不对
DataTabke.Columns 是有数据类型的.
可以考虑使用Convert.ChangeType 来转换

就是这样

#6


1楼正解

#7


引用 1 楼 zgke 的回复:
两个情况会出错.
 1 行和列不存在
 自己判断索引是否在范围内
 2 行的数据类型不对
 DataTabke.Columns 是有数据类型的.
 可以考虑使用Convert.ChangeType 来转换

UP, JF

#8


该回复于2014-07-30 14:22:03被版主删除

#9


引用 1 楼 zgke 的回复:
两个情况会出错.
1 行和列不存在
自己判断索引是否在范围内
2 行的数据类型不对
DataTabke.Columns 是有数据类型的.
可以考虑使用Convert.ChangeType 来转换

up

#10


引用 4 楼 love_cloud 的回复:
你光说报错了 报的什么错了 贴出来 晕... 什么错都不知道  怎么替你分析

这是在做WEB时遇到的问题,我查询数据库,返回了DataTable,现在我想修改dt.Rows[1][1]的值..

 DataTable dt = ....
string str = dt.Rows[1][1].ToString(); //str是值正确
dt.Rows[1][1] = "fsaffd"; //当要修改dt.Rows[1][1]时,出现如下错误:

输入字符串的格式不正确。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.FormatException: 输入字符串的格式不正确。

源错误: 


行 188:
行 189:                string str = dt.Rows[1][1].ToString();
行 190:                dt.Rows[1][1] = "fsaffd";

 


#11


对应的列是什么类型?

#12


你的table中字段的类型是否允许你输入字符串。。

#13


应该是列的类型不对,转换不了,就报错了

#14


引用 11 楼 dancingbit 的回复:
对应的列是什么类型?

在数据库中是float型的..

#15


引用 13 楼 flyingsky00 的回复:
应该是列的类型不对,转换不了,就报错了

恩,类型不对,这样的情况该怎么处理呢?

#16


类型不匹配

#17


float型的列你给它一个字符串?
它是什么类型的就给什么类型的数据。

#18


楼上有正解咯。。jf

#19


楼主遇到这种问题,可以先把问题拿出来,完全可以自己解决...

#20


引用楼主给出的Code
    1.DataTable dt = ....
    2.string str = dt.Rows[1][1].ToString(); //str是值正确
     3.dt.Rows[1][1] = "fsaffd"; //当要修改dt.Rows[1][1]时,出现如下错误:

本人分析:
    第二行中给变量str赋值时,dt.Rows[1][1]的值是需要转化为string类型的。所以在设计表时该列的数据类型并非string类型,而在第三行中又直接将字符串赋给dt.Rows[1][1],所以报错!

#21


数据类型匹配起来。

#22


类型错误

#23


输入字符串的格式不正确。 

要对应类型,比如数据库是int类型,你不能用“aaa”来代替,只能是12、3的数据类型

#24


转成行试图后不是能改的么?DATAVIEW

#25


引用 1 楼 zgke 的回复:
两个情况会出错.
1 行和列不存在
自己判断索引是否在范围内
2 行的数据类型不对
DataTabke.Columns 是有数据类型的.
可以考虑使用Convert.ChangeType 来转换


学习了,自己只想到了第一种情况,没考虑过第二种情况。

#26


2楼说出了真相

索引或数据类型问题

#27


学习

#28


dt.Rows[1][1] = "123";

#29


比如,你datatable连接的数据库中a字段的类型是int

dt.rows[1]["a"]=int.parse(xx.toString());
如果,你要把“absd”转换成float当然会出错了!

#30


两个情况会出错. 
1 行和列不存在 
自己判断索引是否在范围内 
2 行的数据类型不对 
DataTabke.Columns 是有数据类型的.

#31


10分

#32


感觉1,2楼是正解。

#33


引用 25 楼 tj_dragon0 的回复:
引用 1 楼 zgke 的回复:
两个情况会出错.
1 行和列不存在
自己判断索引是否在范围内
2 行的数据类型不对
DataTabke.Columns 是有数据类型的.
可以考虑使用Convert.ChangeType 来转换


学习了,自己只想到了第一种情况,没考虑过第二种情况。


还有第三种情况:只读状态的列

#1


两个情况会出错.
1 行和列不存在
自己判断索引是否在范围内
2 行的数据类型不对
DataTabke.Columns 是有数据类型的.
可以考虑使用Convert.ChangeType 来转换

#2


你的代码是没有错.

看看是不是数据类型不对应的原因.

还有:报什么错贴出来

#3


1楼都说了,无非就这两个问题

#4


你光说报错了 报的什么错了 贴出来 晕... 什么错都不知道  怎么替你分析

#5


引用 1 楼 zgke 的回复:
两个情况会出错.
1 行和列不存在
自己判断索引是否在范围内
2 行的数据类型不对
DataTabke.Columns 是有数据类型的.
可以考虑使用Convert.ChangeType 来转换

就是这样

#6


1楼正解

#7


引用 1 楼 zgke 的回复:
两个情况会出错.
 1 行和列不存在
 自己判断索引是否在范围内
 2 行的数据类型不对
 DataTabke.Columns 是有数据类型的.
 可以考虑使用Convert.ChangeType 来转换

UP, JF

#8


该回复于2014-07-30 14:22:03被版主删除

#9


引用 1 楼 zgke 的回复:
两个情况会出错.
1 行和列不存在
自己判断索引是否在范围内
2 行的数据类型不对
DataTabke.Columns 是有数据类型的.
可以考虑使用Convert.ChangeType 来转换

up

#10


引用 4 楼 love_cloud 的回复:
你光说报错了 报的什么错了 贴出来 晕... 什么错都不知道  怎么替你分析

这是在做WEB时遇到的问题,我查询数据库,返回了DataTable,现在我想修改dt.Rows[1][1]的值..

 DataTable dt = ....
string str = dt.Rows[1][1].ToString(); //str是值正确
dt.Rows[1][1] = "fsaffd"; //当要修改dt.Rows[1][1]时,出现如下错误:

输入字符串的格式不正确。 
说明: 执行当前 Web 请求期间,出现未处理的异常。请检查堆栈跟踪信息,以了解有关该错误以及代码中导致错误的出处的详细信息。 

异常详细信息: System.FormatException: 输入字符串的格式不正确。

源错误: 


行 188:
行 189:                string str = dt.Rows[1][1].ToString();
行 190:                dt.Rows[1][1] = "fsaffd";

 


#11


对应的列是什么类型?

#12


你的table中字段的类型是否允许你输入字符串。。

#13


应该是列的类型不对,转换不了,就报错了

#14


引用 11 楼 dancingbit 的回复:
对应的列是什么类型?

在数据库中是float型的..

#15


引用 13 楼 flyingsky00 的回复:
应该是列的类型不对,转换不了,就报错了

恩,类型不对,这样的情况该怎么处理呢?

#16


类型不匹配

#17


float型的列你给它一个字符串?
它是什么类型的就给什么类型的数据。

#18


楼上有正解咯。。jf

#19


楼主遇到这种问题,可以先把问题拿出来,完全可以自己解决...

#20


引用楼主给出的Code
    1.DataTable dt = ....
    2.string str = dt.Rows[1][1].ToString(); //str是值正确
     3.dt.Rows[1][1] = "fsaffd"; //当要修改dt.Rows[1][1]时,出现如下错误:

本人分析:
    第二行中给变量str赋值时,dt.Rows[1][1]的值是需要转化为string类型的。所以在设计表时该列的数据类型并非string类型,而在第三行中又直接将字符串赋给dt.Rows[1][1],所以报错!

#21


数据类型匹配起来。

#22


类型错误

#23


输入字符串的格式不正确。 

要对应类型,比如数据库是int类型,你不能用“aaa”来代替,只能是12、3的数据类型

#24


转成行试图后不是能改的么?DATAVIEW

#25


引用 1 楼 zgke 的回复:
两个情况会出错.
1 行和列不存在
自己判断索引是否在范围内
2 行的数据类型不对
DataTabke.Columns 是有数据类型的.
可以考虑使用Convert.ChangeType 来转换


学习了,自己只想到了第一种情况,没考虑过第二种情况。

#26


2楼说出了真相

索引或数据类型问题

#27


学习

#28


dt.Rows[1][1] = "123";

#29


比如,你datatable连接的数据库中a字段的类型是int

dt.rows[1]["a"]=int.parse(xx.toString());
如果,你要把“absd”转换成float当然会出错了!

#30


两个情况会出错. 
1 行和列不存在 
自己判断索引是否在范围内 
2 行的数据类型不对 
DataTabke.Columns 是有数据类型的.

#31


10分

#32


感觉1,2楼是正解。

#33


引用 25 楼 tj_dragon0 的回复:
引用 1 楼 zgke 的回复:
两个情况会出错.
1 行和列不存在
自己判断索引是否在范围内
2 行的数据类型不对
DataTabke.Columns 是有数据类型的.
可以考虑使用Convert.ChangeType 来转换


学习了,自己只想到了第一种情况,没考虑过第二种情况。


还有第三种情况:只读状态的列