我正在将XML文件读入数据集,然后添加新列,然后为该列中的每一行分配值。
我的程序创建了新列,我可以看到它具有BitmapImage数据类型,方法是在调试屏幕运行时查看它,并使用消息框toString其数据类型。
但是当我尝试将某些内容分配给该行的列时,它仍然是“{}”,当我尝试使用它时,它会出现错误“无法将类型DBNull强制转换为BitmapImage”;
ItemDS = new DataSet();
ItemDS.ReadXml(homeFolder + @"Items.xml", XmlReadMode.InferSchema);
ItemDS.Tables[0].Columns.Add("pic", typeof(BitmapImage));
MessageBox.Show(ItemDS.Tables[0].Columns[5].DataType.ToString());
foreach (DataRow theRow in ItemDS.Tables[0].Rows)
{
try
{
theRow.ItemArray[5] = (SquareImageFromFile(NewDeployFolder + @"assets\images\items\" + theRow.ItemArray[3].ToString(), 120));
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
combItem.Items.Add(theRow.ItemArray[0]);
}
当我运行赋值行时,没有出现错误,但是在运行该行之后,item数组没有任何反应。
答案 0 :(得分:1)
我没有多使用DataTable
,但我希望ItemArray
能够创建数据的副本,而不是返回“实时”数组DataRow
曲目。我真的没想到要工作。尝试通过索引器设置值:
theRow[5] = (SquareImageFromFile(NewDeployFolder + @"assets\images\items\" +
theRow[3].ToString(), 120));
ItemArray
实际上是为了批量获取或设置值,而不是单个值。