質問者
DataGridを画面遷移で受け継ぐにはどうしたら良いのでしょうか?

質問
-
現在以下要件が達成できず困っております。
1.Aページにて検索ボタン押下で同ページのDataGridへDataTableに格納した情報をBind。
(DataGridにはCheckBox項目が存在)
2.Aページの詳細ボタン押下でチェックが入っている項目の詳細情報をBページに表示。Aページへ表示する件数がかなり多くなることも想定したい為、セッションやクッキーでのデータ保持は行わない方向で考えております。自分としては「PostBack」を利用して「PreviousPage.FindControl」にてDataGridコントロールごと受け継ごうと思ったのですが、「PreviousPage.FindControl」で取得できるのがDataGridのCheckBoxだけとなってしまいます。
上記のような要件は他にもあるかと思いますが皆様どのようにご対応されておりますでしょうか?
ご教授頂けますと幸いです。
すべての返信
-
小野様
いつもご教授誠にありがとうございます。
>DataGridってなんでしょう。。。
>セッションやクッキーといってるところからみるとGridViewかな?
お察しの通りでございます。
ググっていると、DataGridというのが多かったものですからツールバーに無かったのですが使用しておりました。>Aページのほうで選択されているデータが何かわかればいいんでしょうから、チェックが入っているデータの
>キー項目だけをセッションに入れてBページではあらためてデータベースからデータを取り出すとかでは
>ダメなのでしょうか。
上記方法も検討させて頂きました。確かに上記内容であれば問題なく出来ましたがPostBackという素敵な機能を使ってなんとかしたいと思っておりました。>どうしてもセッションを使いたくない、ということならViewの切り替えで画面を遷移したように見せる、とかもありかな?
「View」が未確認です。。。
勉強いたします。色々見てみたのですが、あまりPostBackにて遷移前の情報を受け継ぐと言うのはよろしくないのでしょうか??
すいません。度々のご教授本当に感謝しております。 -
> ググっていると、DataGridというのが多かったものですからツールバーに無かったのですが使用しておりました。
あ、ASP.NET 1.1の情報をみて、2.0なのにわざわざ機能の少ないDataGridを使っているのですか?
後方互換のためだけに残っているクラスなので、GridViewを利用したほうがいいと思いますよ。> あまりPostBackにて遷移前の情報を受け継ぐと言うのはよろしくないのでしょうか??
えーと、PostBackというのは自分自身にPostする、ということです。
なので、ページ遷移の場合にPostBackというのはあり得ません。
もしかするとクロスページポストバックを使いたい、ということでしょうか。#用語が異なると、正しい情報が伝わりませんから気をつけてください。
クロスページポストバックの場合、DataGridやGridViewの中のチェックボックスが付けられた
データを判別する、というのはちょっと工夫がいるような気がします。
Aページにパブリックなプロパティで、チェックがついているデータを正しく返すような
プログラムを記述しておいて、Bページでは@PreviousPageTypeディレクティブを使って
Aページのインスタンスが作成できればうまくいくかなぁ。参考:
http://www.atmarkit.co.jp/fdotnet/dotnettips/409asppostback2/asppostback2.html -
>えーと、PostBackというのは自分自身にPostする、ということです。
>なので、ページ遷移の場合にPostBackというのはあり得ません。
>もしかするとクロスページポストバックを使いたい、ということでしょうか。
>#用語が異なると、正しい情報が伝わりませんから気をつけてください。すいません。。。勉強になりました。ありがとうございます。
>Aページにパブリックなプロパティで、チェックがついているデータを正しく返すような
>プログラムを記述しておいて、Bページでは@PreviousPageTypeディレクティブを使って
>Aページのインスタンスが作成できればうまくいくかなぁ。参考サイト拝見させて頂きました。こちらはaspxファイルに直接サーバサイドプログラムが記述されているのでしょうか?自分が現在作業しているのは、aspxのPageディレクティブに「CodeFile="SampleContent2.aspx.cs"」を指定しており、サーバサイドの処理はそちらに記載しております。参考にさせて頂いたサイトとは定義方法当が異なると思われます。。。
参考にさせて頂いたサイトやご教授頂いた内容を踏まえがんばってみたいと思います。ありがとうございました。