- PR -

sessionオブジェクトについて

1
投稿者投稿内容
タケジロウ
会議室デビュー日: 2002/09/18
投稿数: 2
投稿日時: 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の変更が 反映されていました。なぜ反映されているのかわかりません。どなたか教えていただけないで しょうか?
DaikiRyuto
大ベテラン
会議室デビュー日: 2002/07/23
投稿数: 200
投稿日時: 2002-09-18 12:40
引用:

 ここでわからないのが、(@のDataSet)つまりセッションには初回時のDataSetが設定されて いるはずなので、Aの変更は反映されていないと思っていました。でも実際には、Aの変更が 反映されていました。なぜ反映されているのかわかりません。どなたか教えていただけないで しょうか?



セッションに退避したのは、DataSetへの参照であって、実体ではないから…かな?

セッションにstring以外を退避したことがないんで嘘かもしれません。
NothingButXMLInfoSet
大ベテラン
会議室デビュー日: 2002/07/16
投稿数: 116
投稿日時: 2002-09-18 13:19
引用:

タケジロウさんの書き込み (2002-09-18 11:59) より:
 ここでわからないのが、(@のDataSet)つまりセッションには初回時のDataSetが設定されて いるはずなので、Aの変更は反映されていないと思っていました。でも実際には、Aの変更が 反映されていました。なぜ反映されているのかわかりません。どなたか教えていただけないで しょうか?


DaikiRyutoさんがおっしゃるとおり、DataSetは参照型だからです。参照型とは何か?については、Insider .NETの川俣さんの記事で解説されていたと思います。
タケジロウ
会議室デビュー日: 2002/09/18
投稿数: 2
投稿日時: 2002-09-18 13:37
DaikiRyutoさん、NothingBut.NETFXさん
返答ありがとうございました。
セッションがどうのこうの以前の問題でした・・・。

ありがとうございました。

また何かありましたらよろしくお願い致します。
YAMAGUCHI
会議室デビュー日: 2002/09/24
投稿数: 4
投稿日時: 2002-09-24 22:07
YAMAGUCHIです。
初めて投稿します。

ちょっと気になったのですが、stringは参照型ではないんでしょうか?
1

スキルアップ/キャリアアップ(JOB@IT)