2012-02-11 18 views
0

私はXMLファイルをデータセットに読み込み、新しい列を追加してから、その列の各行に値を割り当てます。DataTableアイテム配列が割り当てられていない

私のプログラムでは新しい列が作成され、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]); 
} 

私が割り当て行を実行すると、エラーは表示されませんが、行が実行された後で項目配列に何も起こりません。

答えて

1

私はDataTable多くを使用していないが、私はむしろ、ItemArrayどのDataRowトラック「ライブ」の配列を返すよりも、データのコピーを作るために期待したいです。私は実際に働くことを期待していませんでした。ただインデクサ経由で値を設定してみてください:

theRow[5] = (SquareImageFromFile(NewDeployFolder + @"assets\images\items\" + 
           theRow[3].ToString(), 120)); 

ItemArrayは本当に取得またはバルクでの値を設定するのではなく、単一の値のためにするものです。

+0

ああ、私はそういう気持ちで、私の構文を修正してくれてありがとう、これは今完璧に動作します! – user1178412

関連する問題