- - PR -
DataRowをDataTableに設定
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2003-07-16 16:20
こんにちは。いつもお世話になっています。
C#で開発をしているものです。 DataRow[]型のDBアクセス関数hoge()で取得したデータを DataTableに設定しようとしています。 その際に以下のようにループして設定しようとすると 「この行は既に別のテーブルに属しています。」 というエラーが表示されてしまいます。 DataRow[] drGet = hoge(); DataTable dt = new DataTable(); for(int i=0;i<drGet.Length;i++) { DataRow dr = dt.NewRow(); dr = drGet[i]; dt.Rows.Add(dr); ←ここでエラーが表示される } 関数hoge()からの参照渡しのために、テーブルの参照を 引き継いでいるのが原因だと思い DataRow[] drGet = hoge(); を DataRow[] drGet = (DataRow[])hoge().clone(); として値渡しにしてみましたが結果は変わりませんでした。 なぜうまくいかないのかよくわかりません。 どなたか分かる方がいましたらご教授をお願いします。 |
|
投稿日時: 2003-07-17 19:46
dr = drGet[i];
この代入で、dr がdrGet[i] をコピーではなく参照するようになっています。 これを dr.ItemArray = drGet[i].ItemArray; などとしてみてはどうでしょう? |
|
投稿日時: 2003-07-18 08:30
DataRowは、関連するDataTableを保持しているのでは?
(Tableプロパティがありますし) なので、値か参照かの問題ではなく、列値のみコピーする必要があるのではないでしょうか? あすかぜさんの方法でどうでしょう? |
1