- PR -

ドロップダウンリストがどうしてもレイヤーの前面に出てしまう

1
投稿者投稿内容
かめたろ
ぬし
会議室デビュー日: 2003/03/20
投稿数: 255
投稿日時: 2005-11-10 17:10
お世話になっております。
ASP.NETでターゲットのブラウザはIE6です。

サブミット中を表現するために、サブミット時に半透明のレイヤーをフォームページにかぶせているのですが、ドロップダウンリストやリストボックスが最前面に表示されてしまいます。
なんとかしてドロップダウンの前面にレイヤーをもって行きたく、Zインデックスをいじってみたりもしましたが・・・

リスト系のコントロールは特殊なんでしょうか?

ボタンとリストを配置したフォームページで、以下のようなコードで試しています。
コード:

Private Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Threading.Thread.Sleep(1000)
End Sub

Private Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.PreRender
'submit時の挙動
Dim div As New System.Web.UI.HtmlControls.HtmlGenericControl("DIV")
div.ID = "submitLayer"
div.Style.Add("Z-INDEX", "999")
div.Style.Add("POSITION", "absolute")
div.Style.Add("LEFT", "0px")
div.Style.Add("TOP", "0px")
div.Style.Add("BACKGROUND-COLOR", "black")
div.Style.Add("FILTER", "alpha(opacity:50)")
div.Style.Add("VISIBILITY", "hidden")
Me.Controls.Add(div)

Dim frm As System.Web.UI.HtmlControls.HtmlForm
frm = Me.FindControl("Form1")
frm.Attributes("onsubmit") = "document.all('submitLayer').style.visibility='visible';" & _
"document.all('submitLayer').style.width=document.body.offsetWidth;" & _
"document.all('submitLayer').style.height=document.body.offsetHeight;"
End Sub



[ メッセージ編集済み 編集者: かめたろ 編集日時 2005-11-10 17:18 ]
ぼのぼの
ぬし
会議室デビュー日: 2004/09/16
投稿数: 544
投稿日時: 2005-11-10 17:20
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=24814&forum=7

原因は↑の過去ログを参照。
ドロップダウンリストやリストボックスだけ個別にstyle.visibilityをhiddenにすれば良い…かな?
#試してません
かめたろ
ぬし
会議室デビュー日: 2003/03/20
投稿数: 255
投稿日時: 2005-11-10 17:36
スミマセン<m(__)m>
過去ログ見逃してました。

ちと読んでみます。
かめたろ
ぬし
会議室デビュー日: 2003/03/20
投稿数: 255
投稿日時: 2005-11-10 18:45
有名な仕様だったんですね・・・。

引用:

ドロップダウンリストやリストボックスだけ個別にstyle.visibilityをhiddenにすれば良い…かな?



ココ を参考にしたら個別に設定しなくても済みました。

一応、コード載せます。
コード:

Private Sub Page_PreRender(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.PreRender
'submit時の挙動
Dim ifr As New System.Web.UI.HtmlControls.HtmlGenericControl("IFRAME")
ifr.ID = "shim"
ifr.Style.Add("Z-INDEX", "998")
ifr.Attributes("scrolling") = "no"
ifr.Attributes("frameborder") = "0"
ifr.Style.Add("POSITION", "absolute")
ifr.Style.Add("LEFT", "0px")
ifr.Style.Add("TOP", "0px")
ifr.Style.Add("DISPLAY", "block")
ifr.Style.Add("BACKGROUND-COLOR", "black")
ifr.Style.Add("FILTER", "alpha(opacity:0)")
ifr.Style.Add("VISIBILITY", "hidden")
Me.Controls.Add(ifr)

Dim div As New System.Web.UI.HtmlControls.HtmlGenericControl("DIV")
div.ID = "submitLayer"
div.Style.Add("Z-INDEX", "999")
div.Style.Add("POSITION", "absolute")
div.Style.Add("LEFT", "0px")
div.Style.Add("TOP", "0px")
div.Style.Add("BACKGROUND-COLOR", "black")
div.Style.Add("FILTER", "alpha(opacity:50)")
div.Style.Add("VISIBILITY", "hidden")
Me.Controls.Add(div)

Dim frm As System.Web.UI.HtmlControls.HtmlForm
frm = Me.FindControl("Form1")
frm.Attributes("onsubmit") = "document.all('shim').style.visibility='visible';" & _
"document.all('shim').style.width=document.body.offsetWidth;" & _
"document.all('shim').style.height=document.body.offsetHeight;" & _
"document.all('submitLayer').style.visibility='visible';" & _
"document.all('submitLayer').style.width=document.body.offsetWidth;" & _
"document.all('submitLayer').style.height=document.body.offsetHeight;"

End Sub



ドロップダウンは完全に消え去ってしまうけど、丸見えよりは全然ましかな・・・。
情報ありがとうございました。
またよろしくお願いします。


[ メッセージ編集済み 編集者: かめたろ 編集日時 2005-11-10 18:47 ]

[ メッセージ編集済み 編集者: かめたろ 編集日時 2005-11-10 18:49 ]
1

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