- PR -

[ASP.NET]JavaScriptのページ遷移について(A画面からB画面、B画面からC画面を開きたい)

1
投稿者投稿内容
てっちゃん
常連さん
会議室デビュー日: 2005/05/10
投稿数: 23
投稿日時: 2005-07-30 04:32
A画面のハーパーリンクからB画面を開き、B画面のボタンクリックイベントで
C画面を開く処理ではまっています。
具体的にはA画面は検索結果で、メールアドレスのハイパーリンクでB画面の
メール送信画面が開き、B画面ではボタンクリックイベントでファイル選択
画面を開く処理を行いたいのですが、C画面のwindow.openerで「nullまたは
オブジェクトではありません」のエラーが発生します。
画面Cを開く画面Bのフォーム名、テキストボックス名は確認したところ
間違いなく指定してあります。
試しにA画面を介さずにB画面からC画面を開くとうまくいきます。
A画面からですとB画面からC画面を開く際に新しいWindowで開かずに
BページのWindowに開かれてしまいます。
具体的には次のようなコードを書いています。
【A画面】
次のコードで検索結果のメールアドレスにB画面を開くURLを作成しています。
Dim strScript As New StringBuilder
With strScript
.Append("javascript:var w=window.open('MailSend.aspx?mail=")
.Append(wkMail)
.Append("',null,'resizable=yes,width=700,height=600,location=no');")
End With

'分類見出し行はURLを空白とし、ハイパーリンクを解除する。
If drow("ID") = "-1" Or wkMail.ToString = String.Empty Then
Return String.Empty
Else
Return strScript.ToString
End If

【B画面】
次のコードで添付ファイル参照画面を開く処理をしています。
Sub Button_Command(ByVal s As Object, ByVal e As CommandEventArgs)
WriteScript(e.CommandArgument)
End Sub

Sub WriteScript(ByVal strSource As String)

Dim strFeatures As String = "Height=50,Width=450,Top=50," & _
"Left=50,dependent=yes,location=no,menubar=no," & _
"resizable=yes,scrollbars=no,status=no," & _
"titlebar=no,toolbar=no"
Dim sbScript As New StringBuilder
With sbScript
.Append("<script language='javascript'>" & vbCrLf)
.Append(vbTab & "window.open('AttachmentFileDialog.aspx',null,'" & _
strFeatures & "');" & vbCrLf)
.Append("</" & "script>")
End With
RegisterClientScriptBlock("openwin", sbScript.ToString)
End Sub

【C画面】
C画面の確定後のイベントは次の通りです。
Sub btnOk_Click(ByVal s As Object, ByVal e As EventArgs)
Dim strFile As String = String.Empty
If Not (fileUpload.PostedFile Is Nothing) Then
strFile = fileUpload.PostedFile.FileName
strFile = strFile.Replace("\", "\\")
End If

Dim sbScript As New StringBuilder
With sbScript
.Append("<script language='javascript'>" & vbCrLf)
.Append(vbTab & "window.opener.frmMail.txtAttachment.value = '" & strFile & "';" & vbCrLf)
.Append(vbTab & "window.close();" & vbCrLf)
.Append("</" & "script>")
End With
RegisterClientScriptBlock("closewin", sbScript.ToString)
End Sub

どうぞよろしくお願いします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2005-07-30 05:36
 window.open の第2引数って、window の名前でしたっけ?これ、きちんと名前付けないと、いくつでも開いてしまいません?
そういう仕様なら、それでいいけど。。。
_________________
てっちゃん
常連さん
会議室デビュー日: 2005/05/10
投稿数: 23
投稿日時: 2005-07-30 08:38
Jittaさん ご回答ありがとうございました。
Jittaさんのご指摘通りでした。
何気なく第2引数を null にしていたのがまずかったようでした。
修正したらうまく動きました。
以前投稿したときもJittaさんに回答していただきました。感謝です。
今後ともよろしくお願いします。
1

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