- - PR -
sessionオブジェクトについて
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2002-09-18 11:59
初めての投稿&.NETのタケジロウです。
意味不明な質問かもしれませんが、よろしくお願い致します。 Private void Page_Load(object sender, System.EventArgs e) { if(IsPostBack) { dsShippers = (ShippersSet)Session["ShippersSet"]; } else { daShippers.Fill(dsShippers); dgShippers.DataBind(); Session["ShippersSet"] = dsShippers; } } private void dgShippers_UpdateCommand(object source, System.Web.UI.WebControls.DataGridCommandEventArgs e) { dgShippers.EditItemIndex = -1; dsShippers.Shippers[e.Item.DataSetIndex].CompanyName = ((TextBox)e.Item.Cells[1].Controls[0]).Text; dsShippers.Shippers[e.Item.DataSetIndex].Phone = ((TextBox)e.Item.Cells[2].Controls[0]).Text; dgShippers.DataBind(); } @最初、ページロードした時には、DataAdapter.Fillメソッドを使用し、DataSetに格納しバ インドしてDataGridに貼り付けています。 さらに、そのDataSetをセッションオブジェクトに格納しています。 AUpdateCommandイベントにより変更された値をDataSetに反映しています。 Bその後、再びUpdateCommandイベントにより変更しようとすると、 まず、Page_Loadが走るので、IsPostBackでtrueになりDataSetにセッションの値がセット されます。 ここでわからないのが、(@のDataSet)つまりセッションには初回時のDataSetが設定されて いるはずなので、Aの変更は反映されていないと思っていました。でも実際には、Aの変更が 反映されていました。なぜ反映されているのかわかりません。どなたか教えていただけないで しょうか? | ||||
|
投稿日時: 2002-09-18 12:40
セッションに退避したのは、DataSetへの参照であって、実体ではないから…かな? セッションにstring以外を退避したことがないんで嘘かもしれません。 | ||||
|
投稿日時: 2002-09-18 13:19
DaikiRyutoさんがおっしゃるとおり、DataSetは参照型だからです。参照型とは何か?については、Insider .NETの川俣さんの記事で解説されていたと思います。 | ||||
|
投稿日時: 2002-09-18 13:37
DaikiRyutoさん、NothingBut.NETFXさん
返答ありがとうございました。 セッションがどうのこうの以前の問題でした・・・。 ありがとうございました。 また何かありましたらよろしくお願い致します。 | ||||
|
投稿日時: 2002-09-24 22:07
YAMAGUCHIです。
初めて投稿します。 ちょっと気になったのですが、stringは参照型ではないんでしょうか? |
1