无法隐式地从字符串转换为字符串[]

时间:2010-12-29 15:23:21

标签: c# asp.net

我正在尝试将字符串数组中的值复制到DataRow,它会引发错误:

  

无法隐式转换为字符串[]

代码:

DataRow dr = null;
ddcontent[i] = strfinalstartweek[i] + " - " + strfinalendweek[i] + "-- $" + openingbid;
// ddcontent is the string array
for (int i = 0; i < 12; i++)
{
    dr.ItemArray = ddcontent[i];
    ListItem item = new ListItem();
    item.Text = NullHandler.NullHandlerForString(dr["OpeningBid"], string.Empty);
    ddweek.Items.Add(item);
}

你们认为这里有什么不对......尝试了很多方法。

提前致谢!!

3 个答案:

答案 0 :(得分:2)

dr.ItemArray = ddcontent[i];

ItemArray属于object[]类型,因此该行无效。 string无法转换为object的数组。但是,基于错误的文本,我想知道代码中是否存在另一种类型不匹配。你能说明哪一行包含错误吗?

答案 1 :(得分:0)

ddcontent是一个字符串数组(数据行)?如果要将每一行切成适合数据行,则必须使用string.Split method

答案 2 :(得分:0)

根据提供的信息,似乎ddcontent [i]是一个字符串,并且您正在尝试将其分配给属性 - ItemArray - 它需要一个数组。要解决此问题,您需要:

将此行移到循环外部,并将ddcontent数组直接指定给ItemArray。但请注意,您的ddcontent必须将相同数量的项目作为DataRow中的列。

   dr.ItemArray = ddcontent;
   for (int i = 0; i < 12; i++)
   {
      ListItem item = new ListItem();
      item.Text = NullHandler.NullHandlerForString(dr["OpeningBid"], string.Empty);
      ddweek.Items.Add(item);
   }

或者在循环中使用Item indexer

分配项目
   for (int i = 0; i < 12; i++)
   {
      dr.Item[i] = ddcontent[i];
      ListItem item = new ListItem();
      item.Text = NullHandler.NullHandlerForString(dr["OpeningBid"], string.Empty);
      ddweek.Items.Add(item);
   }

另外,我假设您在DataRow dr = null之后的代码中的某处创建了一个新的DataRow实例,并且在使用dr之前,即在某处有这样的行:

dr = dt.NewRow(); 

其中dt是您的数据表。