0
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);

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

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

之后我尝试更改为

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

我得到另一个错误

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

我已经得到了我想要的答案,我会在 7 小时后发布答案,谢谢大家

4

4 回答 4

0

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

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

于 2012-11-12T07:51:36.813 回答
0

问题是它"Branch"不是整数。

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

于 2012-11-12T07:58:32.120 回答
0

我假设您认为列序数是从一开始的,但它是从零开始的,因此drBranch[1]是第二列。

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

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

(我正在使用SetField扩展方法,因为它是强类型并支持可空值)

于 2012-11-12T07:58:39.210 回答
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);
于 2015-01-13T12:24:38.373 回答