ボタンが押されたとき、モーダルダイアログを表示する。
Dim strScr As String
Dim strKey As String
‘同じアドレスでモーダルダイアログを開くと
‘Page_Loadが発生しないことがあるのでQueryStringを設定して毎回アドレスを変更
strKey = Format(Now, “yyyyMMddhhmmss”)
strScr = “<script type=’text/javascript’>”
strScr += “var ret = window.showModalDialog(‘./SelectFileDialog.aspx”
strScr += “?key=” & strKey & “‘,window,’dialogWidth=600px; dialogHeight=150px’);”
strScr += “if (ret == 1) {”
strScr += “}”
strScr += “</script>”
‘Webページに起動スクリプトを登録する
Me.ClientScript.RegisterStartupScript(Me.GetType(), “追加”, strScr)
End Sub
※ダイアログから戻り値で1が返ったとき(OKボタンが押されたとき)の処理は、省略しています。
モーダルダイアログとして表示するフォーム側の処理
If IsPostBack() Then
Exit Sub
End If
‘IEでモーダルウィンドウを表示する場合は、これが無いと余計なウィンドウを表示してしまう
Response.Cache.SetExpires(DateTime.Now.AddDays(-1))
‘ボタンを押したときにそれぞれのスクリプトを実行する
btnOk.Attributes.Add(“OnClick”, “OnOk()”)
btnCancel.Attributes.Add(“OnClick”, “OnCancel()”)
End Sub
上のOnOk()、OnCancel()のスクリプトはあらかじめフォームに下のような感じで埋め込んでます。
<title></title>
<!– IEでモーダルウィンドウを表示する場合は、これが無いと余計なウィンドウを表示してしまう –>
<base target=”_self” />
<script type=”text/javascript” language=”javascript” >
<!–
//初期化
window.onload = function () {
window.returnValue = 0;
}
//決定
function OnOk() {
window.returnValue = 1;
window.close();
}
//キャンセル
function OnCancel() {
window.returnValue = 0;
window.close();
}
//–>
</script>
</head>