- PR -

親フォームのリロードをさせたくない

1
投稿者投稿内容
チャチャ
常連さん
会議室デビュー日: 2003/10/13
投稿数: 42
投稿日時: 2006-08-23 18:33
いつもお世話になります。
現在VB.NET2003にて、Webアプリを開発してます。
現在、行き詰ってる問題があります。

親画面と子検索画面があって、Javascriptで
ポップアップ制御をかけています。

1.
 親画面にDropDownListのA.B、Cの三つがあります。
 Aを選択すれば、DBを検索して結びつくデータをBに
 セット、Bを選択すれば、Cにセットする。
 Cの横に検索ボタンを用意して、ボタンを押下げると子画面を開く。
2.子画面で名前を検索したら、データを親画面の
 CのDropDownListにセットする。

1の処理はwindow.openで開きます。
2の処理は
window.opener.location.href = 'page1.aspx?value=aaa';
で子画面が閉じられ、データもセットできた。
問題は親画面のAとBの値をPage_Loadのリロードによりクリアされてしまいます。
****ソース****
親画面
Page_Load(){

If Request.QueryString("Value") <> "" Then
dlpC.Items.Clear()
dlpC.Items.Add(New ListItem(CStr(Request.QueryString("Value")),CStr(Request.QueryString("Code"))))
dlpc.SelectedIndex = 0
End If
}

**子画面****
ボタンを押すイベント
Dim strScript As New System.Text.StringBuilder

With strScript
.Append("<script language='javascript'>" & vbCrLf)
.Append(vbTab & "window.opener.location.href = 'subpage.aspx?Code=XXX&Value=YYY';")
.Append(vbTab & "window.close();" & vbCrLf)
.Append("</script>")
End With

If (Not IsClientScriptBlockRegistered("clientScript")) Then
Me.Page.RegisterClientScriptBlock("clientScript", strScript.ToString)
End If

どうにか、親画面をリロードさせない方法がないでしょうか?
THREE-ONE
常連さん
会議室デビュー日: 2006/08/17
投稿数: 36
投稿日時: 2006-08-23 20:42
こんばんは

window.opener.location.href = 'page1.aspx?value=aaa';
で、ページ遷移を行っているのでPage_Loadはどうしても走ります。
リクエストからAとBのDropDownListの値を取得して、再設定すればできないこともないですが、他のページからの遷移を考えるとオススメできません。

子供の検索画面でJavaScriptを使用して
window.opener.getElementById("CのDropDownListのID")
で親のDropDownListを取得できませんか?
あとは、値を設定してやって自分を閉じてやればいいと思います。
これなら通信は発生しません。
チャチャ
常連さん
会議室デビュー日: 2003/10/13
投稿数: 42
投稿日時: 2006-08-24 18:05
THREE-ONE さんへ

 ご回答がありがとうございました。
以下のサイトを参照してなんとか解決案が見つかりました。

また今後、宜しくお願いします。
チャチャ
常連さん
会議室デビュー日: 2003/10/13
投稿数: 42
投稿日時: 2006-08-24 18:52
自己レスです
失礼しました、URLの貼り付けを忘れました。
URLはこっちらです。
http://www.aa.alpha-net.ne.jp/kataho/asp_net/valuestorer.html

1

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