日期:2014-05-18  浏览次数:20427 次

单击服务器按钮,显示一个层(怪问题哦!大家来看看)
请问下大家
当我单击按钮时,显示Layer1层,但是第一次单击时没反映,之后才有,而且它只是一闪就过了,到底是怎么回事啊,用客户端的又可以.
前台的层
<div id="Layer1" style="Z-INDEX:101; LEFT:48px; VISIBILITY:hidden; WIDTH:200px; POSITION:absolute; TOP:64px; HEIGHT:115px"
class="unnamed1">

后台
private void ImageButton1_Click(object sender, System.Web.UI.ImageClickEventArgs e)
{
Response.Write("<script type=\"text/javascript\">");
Response.Write("function show(){");
Response.Write("document.getElementById(\"Layer1\").style.visibility=\"visible\";");

Response.Write("</script>");

ImageButton1.Attributes.Add("onclick","show()");



}

------解决方案--------------------
首先,那些输出Javascript的代码是应该放在Page_load里面的.次之,你的按钮执行的只是客户端事件...所以不应该使用服务器端的按钮..因为服务器端按钮会触发服务器端事件,而服务器需要对事件做出相应的处理,再作出反应..所以会刷新页面...所以按钮必须用客户端按钮...

或者还是采用2楼的方法,用return false来阻止向服务器提交事件....不过,如此实现这样的一个效果...采用的方法显得不是很好..
 
C# code
protected void Page_Load(object sender, EventArgs e) 
    { 
            Response.Write("<script type=\"text/javascript\">"); 
            Response.Write("function show(){"); 
            Response.Write("document.getElementById(\"Layer1\").style.visibility=\"visible\";"); 

            Response.Write("}</script>"); 

            ImageButton1.Attributes.Add("onclick", "show();return false;"); 

    }

------解决方案--------------------
sorry,刚才没有仔细看你的代码,现在才发现,你是把显示层那个写到一个function里面去了,用literal的话可以不用写到function里面,要不你就还在后面加一个show()来调用你写的那个函数;