- PR -

子ウィンドウから親ウィンドウに値を反映させたい

1
投稿者投稿内容
セルカー
ベテラン
会議室デビュー日: 2004/04/08
投稿数: 70
投稿日時: 2008-10-22 08:48
VS2005(C#)で開発しています。

親ウィンドウからボタンのクリックで子ウィンドウを呼び出し、子ウィンドウで入力された値を親ウィンドウに反映させたいのですが、その際に画面をリロードすることなく反映させることは可能でしょうか?window.openerを使えば、呼び出し元ウィンドウに値を反映できる、というところまではなんとなく分かったのですが、今の状態ですと画面がリロードしてしまい、すでに入力されているほかの項目の値を保持させるのが、とてもめんどくさそうに思えます。Ajax Control Tool Kit等を使ってできないものでしょうか??
johnes
ベテラン
会議室デビュー日: 2007/11/21
投稿数: 50
投稿日時: 2008-10-22 09:41
まぁ適当ですが一応Firefox3では目的と思われる動作します。

コード:
●oya.html
<html>
<head>
<script type="text/javascript">
function OpenKo()
{
	window.open("./ko.html", "ko");
}
</script>
</head>
<body>
<form name="frm" method="post" action="">
	<input type="text" name="text1" value="" />
	<input type="button" value="open ko" onClick="OpenKo();" />
</form>
</body>
</html>

●ko.html
<html>
<head>
<script type="text/javascript">
function SetToOya()
{
	window.opener.document.frm.text1.value = document.frm.text2.value;
}
</script>
</head>
<body>
<form name="frm" method="post" action="">
	<input type="text" name="text2" value="" onMouseOut="SetToOya();" />
</form>
</body>
</html>

セルカー
ベテラン
会議室デビュー日: 2004/04/08
投稿数: 70
投稿日時: 2008-10-22 10:27
ありがとうございます。

子ウィンドウは検索画面で、検索結果をGridViewに表示して、その中から選択されたものの情報を親ウィンドウに渡す、という挙動を行いたいのですが、GridViewのAutoGenerationSelectButtonに「function SetToOya()〜」の部分を呼び出そうとして、また詰まってしまいました・・・(´・ω・`)

Renderイベントもないみたいなのですが、どのような記述が良いのでしょうか・・・?
セルカー
ベテラン
会議室デビュー日: 2004/04/08
投稿数: 70
投稿日時: 2008-10-22 10:53
自己レスですみません。

Functionを使わずにそのままjavascriptを追加すれば言いだけですね・・・

↓↓↓の感じでいけました、johnesさん、ありがとうございます!

protected void dtgHoge_SelectedIndexChanged(object sender, EventArgs e)
{
// 選択された行の値を取得
String strHoge = dtgHoge.SelectedRow.Cells[1].Text.ToString();

// javascriptの追加に必要なプロパティを定義
Type tpPubs = this.GetType();
String strJSClient = "SelectedItems";

// ClientScriptManagerクラスの定義をページクラスから読み込む
ClientScriptManager csm = Page.ClientScript;

// クライアントスクリプトがすでにセットされていないか確認
if(!csm.IsClientScriptBlockRegistered(tpPubs,strJSClient))
{
// ストリングビルダーを宣言し、javascriptを追加
StringBuilder stbPubs = new StringBuilder();
stbPubs.Append("<script type=\"text/javascript\">{window.opener.document.form1.TextBox1.value = " + strHoge + "; window.close();}</script>");

// クライアントスクリプトにセット
csm.RegisterClientScriptBlock(tpPubs, strJSClient, stbPubs.ToString(), false);
}
}

1

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