0

aspxページにAspxGriviewがありますid="grdManageFilterRoom"。データベースからデータを取得して、このグリッドをバインドしています。変数に変更があった場合、Session["grdManageFilterRoom"]それは自動的にSession["tmpGrdManageFilterRoom"]変数に反映されます。なぜそれが起こっているのかわかりません。この動作を避けたいと思います。任意の提案をいただければ幸いです。

   Session["grdManageFilterRoom"] = NameIdPairs<Int32>.GetRooms(companyCode, companyPersonID);          
   grdManageFilterRoom.DataSource = Session["grdManageFilterRoom"];
   Session["tmpGrdManageFilterRoom"] = Session["grdManageFilterRoom"];
4

1 に答える 1

0

これ:

Session["tmpGrdManageFilterRoom"] = Session["grdManageFilterRoom"];

両方のセッション変数が同じオブジェクトを指すようにします(メソッドは参照型を返すと思います)。基本的に、またはGetRoomsを使用しているかどうかは関係ありません(同じオブジェクトであるため)。Session["tmpGrdManageFilterRoom"]Session["grdManageFilterRoom"]

これを防ぎたい場合は、それらのオブジェクトのクローンを作成する必要があります。

于 2012-08-04T10:19:04.460 に答える