トップ回答者
親ウィンドウに遷移・・・

質問
回答
-
(3) の機能は、「Target に親ウィンドウのフレームの名前を設定」の部分で実現されています。--以下は蛇足window1 (frameset)frame1frame2 (list.aspx)という状態で list.aspx の追加ボタンから window.open() が実施されてwindow2 (list.aspx?for=register)が開いたとします。この状態でデータベースに登録する必要な情報を入力し、登録ボタンを押すと、list.aspx に PostBack が実施され、self.close() によって window2 が閉じ、target 属性によって frame2 に結果が出力されます。list.aspx の PostBack では、window2 の入力内容を Form の入力情報と受け取り、追加されたデータを使用したリストを再表示することになります。
すべての返信
-
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 はなしで) -
返事が遅くなりまして、すみません。
皆さんの回答、ありがとうございます。SurferOnWwwさんの仰ったとおり、
ASP.NET 1.0を使っています。目的補充:
親 Window を開いたまま、別 Window を開き、
その別 Window で【登録】ボタンをクリックした時、
DBへの商品ごとを登録、削除を行います。別 Windowにある【登録】ボタンをクリックのタイミングで、
親Windowで、DBに 登録した商品番号を呼んで、
一件の新規登録した商品内容をリストに表示します。
商品リスト画面(goodsList.aspx)を立ち上がる時、
商品番号は条件として、必要です。そして、親Windowで、
配置したコントロール:
テキストボックス:商品名と商品番号
ボタン:【検索】
親Windowで、商品の検索こともできます。自分が考えた方法は例えば、
①別 Windowの【登録】ボタンイベント = 親Windowの【検索】ボタンイベント にします。
②更に商品番号をgoodsList.aspxに渡します。
いけるかなと思っていますが、実現する方法は、解らないです。
trapemiyaさんから教えて頂いた方法は、
もうちょっと詳しく説明して頂けないでしょうか。何方がアドバイス、解決策を教えて頂けないでしょうか。
初歩の質問ですが、
よろしくお願いいたします。 -
> 可能ですか? (AJAX はなしで)前の投稿に、具体的な方法を示している通りじゃないですか?ちゃんと実現できてますよね?ASP.NET 2.0 以前の場合、OnClientClick に関してはすでに書かれているように Attributes を操作し、PostBackUrl に関しては無視して、登録用のウィンドウを親フレームの商品内容をリスト表示している aspx で出力できるように調整することになります。window1(frameset1)+ frame1+ frame2 (list.aspx)window2 (list.aspx?for=register)みたいなかんじで、パラメータをつけて呼び出すことで登録ウィンドウを表示するようにすると、PostBackUrl の機能を借りなくても済みます。どちら側のウィンドウから PostBack が発生しているかはコードで確認し、適切な処理を実施することになるため、コーディング量が増えて内容も複雑にはなります。
-
剣道 さんからの引用 自分が考えた方法は例えば、
①別 Windowの【登録】ボタンイベント = 親Windowの【検索】ボタンイベント にします。
②更に商品番号をgoodsList.aspxに渡します。
いけるかなと思っていますが、どう考えてもいけないと思いますが、K.Takaoka さんは別のご意見をお持ち
のようなので、聞いてみてください。自分も疑問点はお尋ねするつもりですが。
剣道 さんからの引用 trapemiyaさんから教えて頂いた方法は、
もうちょっと詳しく説明して頂けないでしょうか。先のスレッド、「ハイパーリンクの問題」で例を示しているので参考にしてく
ださい。先の例は HyperLink ですが、Button の場合でも、 onclick 属性
に JavaScript を設定する方法は基本的に同じです(全く同じではないので
そのままコピペしないでくださいね)。
http://forums.microsoft.com/MSDN-JA/ShowPost.aspx?PostID=3881963&SiteID=7 -
ちょっと行き違い/誤解があるようですが、先の質問は、以下の (1), (2), (3) で、
(1) 親 Window を開いたまま、別 Window を開き、
(2) その別 Window で【登録】し、
(3) その結果を開いたままの親 Window に反映する(親 Window には手を触れないで)最後の (3) が可能ですか、とお尋ねしたしだいです。
K.Takaoka さんからの引用 前の投稿に、具体的な方法を示している通りじゃないですか?ちゃんと実現できてますよね?というのは、(1), (2) のことだと理解しています。もし、(3) が可能であれば、具
体的な方法を教えていただけると幸いです。
-
(3) の機能は、「Target に親ウィンドウのフレームの名前を設定」の部分で実現されています。--以下は蛇足window1 (frameset)frame1frame2 (list.aspx)という状態で list.aspx の追加ボタンから window.open() が実施されてwindow2 (list.aspx?for=register)が開いたとします。この状態でデータベースに登録する必要な情報を入力し、登録ボタンを押すと、list.aspx に PostBack が実施され、self.close() によって window2 が閉じ、target 属性によって frame2 に結果が出力されます。list.aspx の PostBack では、window2 の入力内容を Form の入力情報と受け取り、追加されたデータを使用したリストを再表示することになります。
-
レスをありがとうございました。> K.Takaoaka さん
説明いただいた以下の部分でやっと理解できました。frameset は使ったことがなく、そ
のあたりに無知なものですから、理解が遅くて、お手数をおかけしました。
K.Takaoka さんからの引用 window2 (list.aspx?for=register)が開いたとします。この状態でデータベースに登録する必要な情報を入力し、登録ボタンを押すと、list.aspx に PostBack が実施され、self.close() によって window2 が閉じ、target 属性によって frame2 に結果が出力されます。剣道さん>
ということで、表示する内容にもよりますが、
> 別のウィンドウを開き、内容を記入してから、【登録】ボタンを押すと、
> 親ウィンドウ中の一部のフレームで、一件の登録した商品内容をリスト一覧でを表示したいです。というのは、frameset を使って実現可能なようです。自分でもサンプルを作って、可能
なことを検証してみました。間違った情報を連絡してすみませんでした。
-
今更ながらのレスですが・・・
frameset を使うのはユーザービリティ上問題があるらしいですが、その代わ
りにインラインフレーム (iframe) を使っても可能です。(strict DTD では使えないので、やはり過渡的な技術だそうですが)
例えば、親ウィンドウで表示する .aspx の body 要素の中に「一部のフレー
ム」を iframe として以下のように記述し、<body>
<form id="form1" target="PostBackTarget" runat="server">
<div>
<aspataGrid 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>