javascriptでモーダルダイアログを表示

ボタンが押されたとき、モーダルダイアログを表示する。

Protected Sub btnAdd_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnAdd.Click

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ボタンが押されたとき)の処理は、省略しています。

モーダルダイアログとして表示するフォーム側の処理

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

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()のスクリプトはあらかじめフォームに下のような感じで埋め込んでます。

<head runat=”server”>
<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>

コメントを残す

メールアドレスが公開されることはありません。