- - PR -
ASP.NET2.0 Gridview 丸ごと Session退避は可能?
投稿者 | 投稿内容 | ||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2008-03-05 10:51
いつもお世話になります
GridView の内容を Sessionに退避する方法は? 以下のような GridView があります 項目Aから項目Dは あるDBから取得されるものですが 入力項目に関しては、項目の属性により 入力のパターンがあります ------------------------------------------------------------------ 項目A 入力1 | 項目B 入力1 入力2 (Label) (TextBox) | (Label) (DropDownList) (TextBox) ------------------------------------------------------------------ 項目C 入力1 入力2 | 項目D 入力1 (Label) (DropDownList) (TextBox) | (Label) (TextBox) ------------------------------------------------------------------ 現在の所、入力項目は非連結項目とし 1つのセルに対して 入力パターン別に パネルを作成し 項目Aの属性に応じて Panel1、Panel2 のどちらかを Visible=False に しています ----------------------------------------------- 項目A Panel1 入力1 (Label) (TextBox) Panel2 入力1 入力2 (DropDownList) (TextBox) ----------------------------------------------- この非連結の入力項目に入力された値を含めて このGridViewを丸毎、Sessionに保存したいのですが 「Session["RMSWebMZ1230__GridView1"] = this.GridView1」 こんな事をやっても 「シリアライズ化出来ない」というエラーになります Session は SQL Server に 置くようにしてあります このページから別のページに遷移後、戻ってきた時に 現状の画面をそのまま表示したいのです ページ毎、どこかに 退避なんて出来れば 一番在り難いのですが・・・・・ 項目の一覧も動的に作成されるし 入力項目もパターンがたくさんあるので うまい事、どこかに 退避できないかなと、思ってしまうのですが・・・ どうか ご教授願います よろしくお願いいたします | ||||||||||||
|
投稿日時: 2008-03-05 13:45
InProc 以外のセッション状態モードを使用する場合、セッション変数値が外部のデータ ストアに格納されるため、セッション変数の型はプリミティブ .NET 型であるか、シリアル化できる必要があります。 という事らしいです。 どうしてもGridViewをそのまま保存したいならセッション状態モードをInProcに変更するしかないようです。 影響大きそうですが…^^; | ||||||||||||
|
投稿日時: 2008-03-05 14:11
Sessionに大量データ(このGridView)を確保したいがために Session を SQLServer に置いたのに 返ってあだになったって事???? (涙) Xml に吐き出してみるとか むりくり 入力項目を DataTable にバインドして DataTable で渡すとか するしか ないですかねぇぇ | ||||||||||||
|
投稿日時: 2008-03-05 14:14
2点問題があるような気がします。
1)SQLServerにセッションを保持するのはどうでしょうか? (そもそも、前のページを表示する為に、SQLServerのモードはどうでしょうか) 2)非連結を連結したらどうでしょうか? (そもそもモデルを保存するのがセッションですから、Viewは保存しないです) | ||||||||||||
|
投稿日時: 2008-03-05 14:27
前のページを表示するため というのではなく このGridViewの欄が 検索条件入力のテーブルなんです 検索対象項目、自体があるテーブルの内容に依存して 動的に横3列のGridViewとして作成されています、 各項目に対して、属性に応じた検索条件の入力パターンが あるのです このテーブルから、データ一覧するSQL文が 発行されます 一覧画面からの遷移先の処理も複雑だったので マルチビューを使わなかったのですが マルチビューを使えばよかった・・・・・・ 後悔、先に たたずって やつですねぇ | ||||||||||||
|
投稿日時: 2008-03-05 14:59
自分だったら GridView そのものを退避するんじゃなくて その DataSource にしている(と思われる)DataTable あたり を退避して使うようにしますけど、それじゃダメなんでしょうか。 _________________ ぽぴ王子@わんくま同盟 ぽぴ王子の人生プログラミング中 / ぽぴンち。 | ||||||||||||
|
投稿日時: 2008-03-05 15:30
ごもっともです GridViewを作成する時に 属性毎の入力項目全部のセルを持つのは大変だと思って 非連結にしてしまったのです 現在のDatTable は 検索対象項目の情報しか持っていないのです 入力項目を格納する場所がないのです・・・・ 全部の入力項目パターン分のセルを作成して バインドしなおすか 画面上(入力項目が投入された状態)の GridView から DataTable を作成するか・・・・ と思ったのですが GridViewから DataTableを作成する うまい方法って ないでしょうか? うーー 頭が混乱してきました・・・ [ メッセージ編集済み 編集者: 七 編集日時 2008-03-05 16:21 ] | ||||||||||||
|
投稿日時: 2008-03-05 15:54
(ノ∀`) アチャー(失礼)
よくわからないですが、自分ならこちらを選択すると思います。 入力項目の分の列を DataTable に追加したらなんとかなりそうですけど。
GridView の列をループでまわして DataRow に入れたものを DataTable に追加。 それを GridView の行分だけループでまわす。 手っ取り早くて素直な方法だと思います。 _________________ ぽぴ王子@わんくま同盟 ぽぴ王子の人生プログラミング中 / ぽぴンち。 |