- PR -

postbackについて

1
投稿者投稿内容
キヨ
ベテラン
会議室デビュー日: 2004/08/24
投稿数: 65
投稿日時: 2004-09-09 15:39
お世話になっております。

現在、asp.netで開発しています。

質問ですが、
親画面と子画面があるとします。

親画面で子画面を呼び出し、
子画面でデータを選択したあと、選定ボタンを押し、
セッション変数に値を入れ、子画面を閉じます。

そのあと、親画面で子画面で代入したセッション変数を使って、
親画面に値を表示したいのですが、

「子画面から、親画面のpostbackを走らせることは出来るのでしょうか?」

知っていらっしゃる方、教えて下さい。
宜しくお願いします。

一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2004-09-09 16:06
親画面にJavaScriptで呼ぶ専用のSubmitボタンを作っておくというのはどうでしょう。
子画面を閉じる時にそのボタンのClick()を呼んでから閉じれば良いと思います。

一つの案として。
えんぞ@?
ぬし
会議室デビュー日: 2004/07/06
投稿数: 271
お住まい・勤務地: はまっこ
投稿日時: 2004-09-09 16:11
ここから、以下の条件にて検索してみるといいかも。

キーワード:「親画面 子画面 Session」
すべてが含まれる投稿を検索
キヨ
ベテラン
会議室デビュー日: 2004/08/24
投稿数: 65
投稿日時: 2004-09-10 13:45
お世話になっております。

一郎さん、えんぞさん ご返答ありがとうございます。
過去履歴から、検索してみて
子画面を閉じるとき、親画面を呼び出す方法がありました。
が、
その場合、親画面の処理ではisPostBack = Falseになります。(原理的には正しい。)
isPostBack = Trueにするには、一郎さんの案で、
子から親のボタンClick()をやれば、isPostBack = Trueになりそうですが、
色々試してみたのですが、その方法が実現できません。

どのようなコードを書けば、子から親のボタンをClickすることが、出来るのでしょうか。
ご教授下さい。
よろしくお願いします。
えんぞ@?
ぬし
会議室デビュー日: 2004/07/06
投稿数: 271
お住まい・勤務地: はまっこ
投稿日時: 2004-09-10 14:31
引用:

キヨさんの書き込み (2004-09-10 13:45) より:

親画面の処理ではisPostBack = Falseになります。


[おもいっきり訂正]
!?Post要求になると思いますが...
[/おもいっきり訂正]


[ メッセージ編集済み 編集者: えんぞ@見習 編集日時 2004-09-10 14:40 ]
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2004-09-10 14:50
private void Button1_Click(object sender, System.EventArgs e)
{
  //入力された値をセッションに格納
  this.Session("val") = this.TextBox1.Text;

  //レスポンスのバッファをクリア(一応)
  Response.Clear();

  //HTMLを出力
  Response.Write("<HTML><HEAD><TITLE></TITLE></HEAD><BODY OnLoad=\"window.opener.Form1.Button3.click();window.close();\">");
  Response.Write("</BODY><HTML>");

  //サーバーでの作業を終了
  Response.End();
}

こんな感じでどうでしょうか。
子画面のボタンのクリック時の処理です。

[ メッセージ編集済み 編集者: 一郎 編集日時 2004-09-10 14:51 ]
えんぞ@?
ぬし
会議室デビュー日: 2004/07/06
投稿数: 271
お住まい・勤務地: はまっこ
投稿日時: 2004-09-10 14:57
コード:

Dim JScript As System.Text.StringBuilder = New System.Text.StringBuilder()
JScript.AppendFormat("<SCRIPT language=""JavaScript"">", Chr(10))
JScript.AppendFormat("var theform;", Chr(10))
JScript.AppendFormat("if (window.navigator.appName.toLowerCase().indexOf(""netscape"") > -1) {", Chr(10))
JScript.AppendFormat("theform = opener.document.forms[""formxxx""];", Chr(10))
JScript.AppendFormat("}", Chr(10))
JScript.AppendFormat("else {", Chr(10))
JScript.AppendFormat("theform = opener.document.formxxx;", Chr(10))
JScript.AppendFormat("}", Chr(10))
JScript.AppendFormat("if ( ! opener.closed) { ", Chr(10))
JScript.AppendFormat("theform.submit();", Chr(10))
JScript.AppendFormat("self.close();", Chr(10))
JScript.AppendFormat("}", Chr(10))
JScript.AppendFormat("</SCRIPT>", Chr(10))


orz...

[追記]
元ネタ:Jittaさんだったかな!?に感謝
[/追記]


[ メッセージ編集済み 編集者: えんぞ@見習 編集日時 2004-09-10 14:59 ]
キヨ
ベテラン
会議室デビュー日: 2004/08/24
投稿数: 65
投稿日時: 2004-09-13 12:05
ありがとうございます。
解決しました。

JavaScriptで、
1.子から親のボタンをクリックする方法と、
2.子から親のFormをsubmitする方法。
両方とも出来ました。

今回は、2の方法を使用します。
1

スキルアップ/キャリアアップ(JOB@IT)