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小时后发布答案,谢谢所有
答案 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);