none
親ウィンドウに遷移・・・ RRS feed

  • 質問

  • 度々の質問、すみませんでした。

    vb.netで、Webアプリの開発作業をやっています。
    親ウィンドウのボタン(例えば【商品登録】ボタン)を押すと、
    別のウィンドウを開き、内容を記入してから、【登録】ボタンを押すと、
    親ウィンドウ中の一部のフレームで、一件の登録した商品内容をリスト一覧でを表示したいです。

     

    お聞きしたいのは、

    【登録】ボタンのクリックイベントで、親ウィンドウ中の一つのフレームページを開く方法がわからないです。

    何方がアドバイスを教えていただけないでしょうか。

    初歩の質問ですが、
    よろしくお願いいたします。

    2008年10月3日 2:28

回答

  • (3) の機能は、「Target に親ウィンドウのフレームの名前を設定」の部分で実現されています。
     
    --以下は蛇足
     
    window1 (frameset)
      frame1
      frame2 (list.aspx)
     
    という状態で list.aspx の追加ボタンから window.open() が実施されて
     
    window2 (list.aspx?for=register)
     
    が開いたとします。この状態でデータベースに登録する必要な情報を入力し、登録ボタンを押すと、list.aspx に PostBack が実施され、self.close() によって window2 が閉じ、target 属性によって frame2 に結果が出力されます。
     
    list.aspx の PostBack では、window2 の入力内容を Form の入力情報と受け取り、追加されたデータを使用したリストを再表示することになります。
     
    2008年10月7日 8:45

すべての返信

  • javascriptを使ってボタンのonclickイベントでwindow.openで子画面を開けば良いでしょう。

     例

    Code Snippet
    Button1.OnClientClick = "BLOCKED SCRIPTwindow.open('hoge.aspx');return false;"

     

     

     

    ASP.NET 2.0より前のバージョンでは、Button1.Attribute("onclick") を使ってください。

    2008年10月3日 4:02
    モデレータ
  • すでに trapemiya さんから回答が出ていますし、聞かれていることの
    回答ではないので余計なお世話かもしれませんが、

     

    > 別のウィンドウを開き、内容を記入してから、【登録】ボタンを押すと、
    > 親ウィンドウ中の一部のフレームで、一件の登録した商品内容をリスト一覧でを表示したいです。

     

    は実現できないと思いますが。

    2008年10月3日 13:02
  • あれ、「別ウィンドウにある登録ボタン」の設定なので、
     
    OnClientClick に設定するのは self.close() で
    PostBackUrl に商品内容を受け取る aspx を設定して
    Target に親ウィンドウのフレームの名前を設定
     
    すればよいのではないかな。
    2008年10月5日 7:08
  •  K.Takaoka さんからの引用
    OnClientClick に設定するのは self.close() で
    PostBackUrl に商品内容を受け取る aspx を設定して
    Target に親ウィンドウのフレームの名前を設定
     
    すればよいのではないかな。

     

    別のスレッド「データ表示について」での話ですが、

     

    > >1.0 は必須条件ですか? ObjectDataSource (ASP.NET 2.0) などは
    > >使えないのでしょうか?
    > はい、現時点、必ず1.0です。

     

    だそうです。(OnClientClick や PostBackUrl は使えないようです)

     

    それはともかく、ASP.NET 2.0 を利用できたとしても、

     

    > 親ウィンドウのボタン(例えば【商品登録】ボタン)を押すと、
    > 別のウィンドウを開き、内容を記入してから、【登録】ボタンを押すと、
    > 親ウィンドウ中の一部のフレームで、一件の登録した商品内容をリスト一覧でを表示したいです。

     

    ということは実現可能なのでしょうか?

     

    質問者の方の意図するところは、親 Window を開いたまま、別 Window を
    開き、その別 Window で【登録】(DB の UPDATE, DELETE, INSERT などと
    理解)し、その結果を開いたままの親 Window に反映することだと思って
    いますが、可能ですか? (AJAX はなしで)

    2008年10月5日 11:42
  • 返事が遅くなりまして、すみません。
    皆さんの回答、ありがとうございます。

     

    SurferOnWwwさんの仰ったとおり、
     ASP.NET 1.0を使っています。

     

    目的補充:
    親 Window を開いたまま、別 Window を開き、
    その別 Window で【登録】ボタンをクリックした時、
    DBへの商品ごとを登録、削除を行います。

     

    別 Windowにある【登録】ボタンをクリックのタイミングで、
    親Windowで、DBに 登録した商品番号を呼んで、
    一件の新規登録した商品内容をリストに表示します。
    商品リスト画面(goodsList.aspx)を立ち上がる時、
    商品番号は条件として、必要です。

     

    そして、親Windowで、
    配置したコントロール:
    テキストボックス:商品名と商品番号
    ボタン:【検索】
    親Windowで、商品の検索こともできます。

     

    自分が考えた方法は例えば、
    ①別 Windowの【登録】ボタンイベント = 親Windowの【検索】ボタンイベント にします。
    ②更に商品番号をgoodsList.aspxに渡します。
    いけるかなと思っていますが、

     

    実現する方法は、解らないです。
    trapemiyaさんから教えて頂いた方法は、
    もうちょっと詳しく説明して頂けないでしょうか。

    何方がアドバイス、解決策を教えて頂けないでしょうか。
    初歩の質問ですが、
    よろしくお願いいたします。

     

     

     

    2008年10月6日 0:50
  • > 可能ですか? (AJAX はなしで)
     
    前の投稿に、具体的な方法を示している通りじゃないですか?
    ちゃんと実現できてますよね?
     
     
    ASP.NET 2.0 以前の場合、OnClientClick に関してはすでに書かれているように Attributes を操作し、PostBackUrl に関しては無視して、登録用のウィンドウを親フレームの商品内容をリスト表示している aspx で出力できるように調整することになります。
     
    window1(frameset1)
    + frame1
    + frame2 (list.aspx)
     
    window2 (list.aspx?for=register)
     
    みたいなかんじで、パラメータをつけて呼び出すことで登録ウィンドウを表示するようにすると、PostBackUrl の機能を借りなくても済みます。どちら側のウィンドウから PostBack が発生しているかはコードで確認し、適切な処理を実施することになるため、コーディング量が増えて内容も複雑にはなります。
    2008年10月6日 5:06
  •  剣道 さんからの引用

    自分が考えた方法は例えば、
    ①別 Windowの【登録】ボタンイベント = 親Windowの【検索】ボタンイベント にします。
    ②更に商品番号をgoodsList.aspxに渡します。
    いけるかなと思っていますが、

     

    どう考えてもいけないと思いますが、K.Takaoka さんは別のご意見をお持ち

    のようなので、聞いてみてください。自分も疑問点はお尋ねするつもりですが。

     

     剣道 さんからの引用

    trapemiyaさんから教えて頂いた方法は、
    もうちょっと詳しく説明して頂けないでしょうか。

     

    先のスレッド、「ハイパーリンクの問題」で例を示しているので参考にしてく

    ださい。先の例は HyperLink ですが、Button の場合でも、 onclick 属性

    に JavaScript を設定する方法は基本的に同じです(全く同じではないので

    そのままコピペしないでくださいね)。


    http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=3881963&SiteID=7

    2008年10月6日 13:08
  • ちょっと行き違い/誤解があるようですが、先の質問は、以下の (1), (2), (3) で、

     

    (1) 親 Window を開いたまま、別 Window を開き、
    (2) その別 Window で【登録】し、
    (3) その結果を開いたままの親 Window に反映する(親 Window には手を触れないで)

     

    最後の (3) が可能ですか、とお尋ねしたしだいです。

     

     K.Takaoka さんからの引用

    前の投稿に、具体的な方法を示している通りじゃないですか?
    ちゃんと実現できてますよね?

     

    というのは、(1), (2) のことだと理解しています。もし、(3) が可能であれば、具

    体的な方法を教えていただけると幸いです。

    2008年10月6日 13:18
  • (3) の機能は、「Target に親ウィンドウのフレームの名前を設定」の部分で実現されています。
     
    --以下は蛇足
     
    window1 (frameset)
      frame1
      frame2 (list.aspx)
     
    という状態で list.aspx の追加ボタンから window.open() が実施されて
     
    window2 (list.aspx?for=register)
     
    が開いたとします。この状態でデータベースに登録する必要な情報を入力し、登録ボタンを押すと、list.aspx に PostBack が実施され、self.close() によって window2 が閉じ、target 属性によって frame2 に結果が出力されます。
     
    list.aspx の PostBack では、window2 の入力内容を Form の入力情報と受け取り、追加されたデータを使用したリストを再表示することになります。
     
    2008年10月7日 8:45
  • レスをありがとうございました。> K.Takaoaka さん

     

    説明いただいた以下の部分でやっと理解できました。frameset は使ったことがなく、そ

    のあたりに無知なものですから、理解が遅くて、お手数をおかけしました。

     

     K.Takaoka さんからの引用

    window2 (list.aspx?for=register)
     
    が開いたとします。この状態でデータベースに登録する必要な情報を入力し、登録ボタンを押すと、list.aspx に PostBack が実施され、self.close() によって window2 が閉じ、target 属性によって frame2 に結果が出力されます。

     

     

    剣道さん>

     

    ということで、表示する内容にもよりますが、

     

    > 別のウィンドウを開き、内容を記入してから、【登録】ボタンを押すと、
    > 親ウィンドウ中の一部のフレームで、一件の登録した商品内容をリスト一覧でを表示したいです。

     

    というのは、frameset を使って実現可能なようです。自分でもサンプルを作って、可能

    なことを検証してみました。間違った情報を連絡してすみませんでした。

    2008年10月7日 14:19
  • 皆さんのご返答、情報大変有難う御座いました。

     

    返事が遅くなりました、申し訳ございません。

     

    K.Takaoaka さん、SurferOnWwwさん叮嚀な教授して頂き、

     

    感謝しております。

     

    試させて頂きます。

     

    2008年10月9日 23:51
  • 今更ながらのレスですが・・・

     

    frameset を使うのはユーザービリティ上問題があるらしいですが、その代わ
    りにインラインフレーム (iframe) を使っても可能です。(strict DTD では
    使え

    ないので、やはり過渡的な技術だそうですが)

     

    例えば、親ウィンドウで表示する .aspx の body 要素の中に「一部のフレー
    ム」を iframe として以下のように記述し、

     

    <body>
        <form id="form1" target="PostBackTarget" runat="server">
        <div>
            <aspBig SmileataGrid ID="DataGrid1" runat="server"
            ・・・中略・・・
        </div>
        <hr />
        <iframe name="PostBackTarget" src="Sample.aspx" />
        </form>
    </body>

     

    「一部のフレーム」および別ウィンドウの Sample.aspx を以下のようにする
    といった感じです。

     

    <body>
        <form id="form1" target="PostBackTarget" runat="server">
        <h1>詳細表示</h1>
        ・・・中略・・・
        </form>
    </body>

    2008年10月12日 3:29