通过使用datarow,插入一个字符串值

时间:2012-11-12 07:45:51

标签: c#

DataRow drEmpty = dsResult.Tables[1].NewRow();

dsResult.Tables[1].Rows.InsertAt(drEmpty, 0);

DataRow drBranch = dsResult.Tables[1].Rows[1];

drBranch[1] = "Branch"; <--error

dsResult.Tables[1].Rows.InsertAt(drBranch, 1);

我对这几行代码的预期输出是将第一个空行数据添加到我的dropdownlistbox和第二行,通过在其中添加“Branch”但我没有这样做

错误消息给出 - 输入字符串的格式不正确。不能存储在ows_ID列中。预期的类型是Int64。

之后我尝试改为

drBranch[1] = int64.Parse("Branch");

我得到另一个错误

第二个错误消息 - 输入字符串的格式不正确。

我得到了我想要的答案,我会在7小时后发布答案,谢谢所有

4 个答案:

答案 0 :(得分:0)

在您的示例中,drBranch[1]代表ows_ID列,该列仅接受integer类型的值。这意味着只允许没有小数点的数字。

您可以使用"55"将包含Int64.Parse("55")等数字的字符串转换为整数,但不能将"Branch"之类的字符串转换为整数。您正尝试在ows_ID列中存储字符串。也许你正试图访问错误的索引?

答案 1 :(得分:0)

问题是"Branch"不是整数。

要将值转换为整数,您需要一个整数值作为"526""100"之类的字符串。

答案 2 :(得分:0)

我认为您认为column ordinal是基于一个的,但它是从零开始的,因此drBranch[1]是第二列。

在我看来,最好使用列的名称:

drBranch.SetField<String>("Branch", newBranch);

(我正在使用SetField ex张力方法,因为它是强类型的,并且支持nullables)

答案 3 :(得分:0)

我建议在使用DataRow之前使用DataTable:

DataTabel dtResult = dsResult.Tables[1].Clone();

dtResult.Columns[1].DataType = Type.GetType("System.String");

DataRow drEmpty = dtResult.NewRow();

dsResult.Tables[1].Rows.InsertAt(drEmpty, 0);

DataRow drBranch = dsResult.Tables[1].Rows[1];

drBranch[1] = "Branch";

dsResult.Tables[1].Rows.InsertAt(drBranch, 1);