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

  • 質問

  • 現在以下要件が達成できず困っております。

    1.Aページにて検索ボタン押下で同ページのDataGridへDataTableに格納した情報をBind。
      (DataGridにはCheckBox項目が存在)
    2.Aページの詳細ボタン押下でチェックが入っている項目の詳細情報をBページに表示。

    Aページへ表示する件数がかなり多くなることも想定したい為、セッションやクッキーでのデータ保持は行わない方向で考えております。自分としては「PostBack」を利用して「PreviousPage.FindControl」にてDataGridコントロールごと受け継ごうと思ったのですが、「PreviousPage.FindControl」で取得できるのがDataGridのCheckBoxだけとなってしまいます。

    上記のような要件は他にもあるかと思いますが皆様どのようにご対応されておりますでしょうか?
    ご教授頂けますと幸いです。

     

    2007年1月18日 7:12

すべての返信

  • DataGridってなんでしょう。。。
    セッションやクッキーといってるところからみるとGridViewかな?

    Aページのほうで選択されているデータが何かわかればいいんでしょうから、チェックが入っているデータの
    キー項目だけをセッションに入れてBページではあらためてデータベースからデータを取り出すとかでは
    ダメなのでしょうか。

    どうしてもセッションを使いたくない、ということならViewの切り替えで画面を遷移したように見せる、
    とかもありかな?
    Bページが別ウィンドウだったらこの手は使えないけど。

    2007年1月18日 7:34
  • 小野様

    いつもご教授誠にありがとうございます。

    >DataGridってなんでしょう。。。
    >セッションやクッキーといってるところからみるとGridViewかな?
    お察しの通りでございます。
    ググっていると、DataGridというのが多かったものですからツールバーに無かったのですが使用しておりました。

    >Aページのほうで選択されているデータが何かわかればいいんでしょうから、チェックが入っているデータの
    >キー項目だけをセッションに入れてBページではあらためてデータベースからデータを取り出すとかでは
    >ダメなのでしょうか。
    上記方法も検討させて頂きました。確かに上記内容であれば問題なく出来ましたがPostBackという素敵な機能を使ってなんとかしたいと思っておりました。

    >どうしてもセッションを使いたくない、ということならViewの切り替えで画面を遷移したように見せる、とかもありかな?
    「View」が未確認です。。。
    勉強いたします。

    色々見てみたのですが、あまりPostBackにて遷移前の情報を受け継ぐと言うのはよろしくないのでしょうか??
    すいません。度々のご教授本当に感謝しております。

     

    2007年1月18日 8:18
  • > ググっていると、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

     

    2007年1月18日 9:34
  • >えーと、PostBackというのは自分自身にPostする、ということです。
    >なので、ページ遷移の場合にPostBackというのはあり得ません。
    >もしかするとクロスページポストバックを使いたい、ということでしょうか。
    >#用語が異なると、正しい情報が伝わりませんから気をつけてください。

    すいません。。。勉強になりました。ありがとうございます。

    >Aページにパブリックなプロパティで、チェックがついているデータを正しく返すような
    >プログラムを記述しておいて、Bページでは@PreviousPageTypeディレクティブを使って
    >Aページのインスタンスが作成できればうまくいくかなぁ。

    参考サイト拝見させて頂きました。こちらはaspxファイルに直接サーバサイドプログラムが記述されているのでしょうか?自分が現在作業しているのは、aspxのPageディレクティブに「CodeFile="SampleContent2.aspx.cs"」を指定しており、サーバサイドの処理はそちらに記載しております。参考にさせて頂いたサイトとは定義方法当が異なると思われます。。。
    参考にさせて頂いたサイトやご教授頂いた内容を踏まえがんばってみたいと思います。

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

     

    2007年1月18日 12:04
  • > 参考にさせて頂いたサイトとは定義方法当が異なると思われます。。。

    いや、コードビハインドつかってても同じ定義で動いたと思いますよ。
    まぁ、試していただくのがはやいかな。

    いきなりチェックボックスのついてるところの値を取り出そうとするのは難しいかもしれないので、まずはテキストボックスの値がとれるかどうかとか試してみてください。

     

    2007年1月19日 2:57