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

treeview 作为功能树的问题(比较棘手)
最近发现   treeview   和   linkbutton   等控件   在快速2次单击的时候会停止响应。
例如:一个treeview的结点单击后返回后台执行代码。可是如果在没有返回执行结果前再一次单击该结点,那么从现在开始我点击页面上的任何结点或linkbutton都没有反应。只有按ie的刷新按钮后才能重新操作。

我想到2个办法解决
1.在返回结果前锁定界面。
2.任何时候点击linkbutton之类的东西都重新执行操作。

如何能实现上面说的2个办法呢?请各位高人帮帮忙。

------解决方案--------------------
预防按钮的多次点击。
public void page_load(Object obj,EventArgs e)
{
btn.Attributes.Add( "onclick ", "state=true; ");
StringBuilder sb=new StringBuilder();
sb.Append( "if (!state) return; ");
sb.Append( "var button=document.getElementById( 'btn '); ");
sb.Append( "button.value=\ " Please Wait... \ "; ");
sb.Append( "document.body.style.cursor= 'wait '; ");
sb.Append( "button.disabled=true; ");

string strScript= " <script> ";
strScript=strScript + "var state=false; ";

//将函数绑定到页面的onbeforeunload事件:
strScript=strScript + "window.attachEvent( 'onbeforeunload ',function(){ " +sb.ToString()+ "}); ";
strScript=strScript + " </ "+ "script> ";
Page.RegisterStartupScript( "onbeforeunload ",strScript);
}

private void Submit_Click(Object sender, EventArgs e){
//模拟长时间的按钮处理
System.Threading.Thread.Sleep(2000);
Response.Write( " <script> alert( 'bbbbbb!! '); "+ " </ "+ "script> ");

}

<asp:button id= "btn " Text= "Submit " OnClick= "Submit_Click " runat= "server "/>
或者
//JS:
<script type= "text/javascript ">
var x = 0;
function xx()
{
x++;
if(x==1)
{
return true;
}
else
{
return false;
}
}
</script>

//CS:
protected void Page_Load(object sender, EventArgs e)
{
this.Button1.Attributes.Add( "onclick ", @ "JavaScript:return xx(); ");
}

------解决方案--------------------
用脚本在页面中设置状态变量,点击的时候调整变量的值,当该值满足能够单击的条件时才允许单击。