|
分類:[ASP.NET (C#)]
こんにちは。お世話になっております。 現在、VS2005で言語は、C#とASP.NETを使って開発をしているのですが、 エラーが起きて困っております。 したいこととしては(例)のような事をしようとしているのですが、エラーとして、最後に登録する7人目のデータが 7人分のデータを上書きして登録してしまうのです。つまり、7件とも同じ人間のデータで格納されてしまうのです。
(例)7人分の住所などのデータをList型のtempsにループ処理で格納した後、 データバインドで登録させるデータを表示させる。
問題のソースは、下記の通りです。
for (int i = 0; i < dt.Rows.Count; ++i ) { Detail.CD = (string)ConvertUtility.DBNullToNull(dt.Rows[i]["CD"]); Detail.Name = (string)ConvertUtility.DBNullToNull(dt.Rows[i]["Name"]); Detail.address = (string)ConvertUtility.DBNullToNull(dt.Rows[i]["address"]); Detail.mail = (string)ConvertUtility.DBNullToNull(dt.Rows[i]["mail"]); Detail.zipcode = (string)ConvertUtility.DBNullToNull(dt.Rows[i]["zipcode"]); Detail.mobile = (string)ConvertUtility.DBNullToNull(dt.Rows[i]["mobile"]); Detail.tel = (string)ConvertUtility.DBNullToNull(dt.Rows[i]["tel"]); Detail.favorite1 = (string)ConvertUtility.DBNullToNull(dt.Rows[i]["favorite1"]); Detail.favorite2 = (string)ConvertUtility.DBNullToNull(dt.Rows[i]["favorite2"]);
sessiondata.AddDetail(Detail);
//明細情報をコレクションに設定 temps.Add(Detail); //tempsはList型です。 }
//この後、tempsデータをデータバインドする。
デバックしていてわかったのは、登録したいデータの数分ループはします。 また登録したいデータが例えば3件だったら、1〜3人分データはきっちり走っていますが 1人目をtempsに格納した後([0]番目)、2人目をtempsに格納する時([1]番目)1人目のデータ([0]番目)を2人目のデータで上書きしているのが判明しています。3人目の場合は、1人目と2人目の中身を3人目のデータで上書きした後に([2]番目)にも3人目のデータを登録しています。
対策として、List型に問題があるのは判るのですが、どうしたら良いのか分かり兼ねております。 お手数ですが、誰かご教授ください。
|