在按钮点击后禁用它直到操作完成

好久没有写东西了,今天将以前给同事写的一段代码改了一下共享出来。这段代码用于实现在点击按钮后禁用它直到操作完成。有更好的方法大家可以讨论!

<%@ Page Language="C#" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
>

<script runat="server">
    protected 
void Page_Load (object sender, EventArgs e)
    {
        btn.Attributes.Add (
"onclick",
            Page.GetPostBackEventReference (btn, 
""+
            
";this.value='Submitting';this.disabled = true;");
        lbtn.Attributes.Add (
"onclick",
            
"this.innerText='Submitting';this.disabled = true;");
        ibtn.Attributes.Add (
"onclick",
            Page.GetPostBackEventReference (ibtn, 
""+
            
";this.alt='Submitting';this.disabled = true;");

        
//
        // ASP.NET 2.0 above
        //
        //btn.Attributes.Add ("onclick",
        //    ClientScript.GetPostBackEventReference (btn, "") +
        //    ";this.value='Submitting';this.disabled = true;");
        //lbtn.Attributes.Add ("onclick",
        //    "this.innerText='Submitting';this.disabled = true;");
        //ibtn.Attributes.Add ("onclick",
        //    ClientScript.GetPostBackEventReference (ibtn, "") +
        //    ";this.alt='Submitting';this.disabled = true;");
        //
        // OR 
        //
        //btn.OnClientClick =
        //    ClientScript.GetPostBackEventReference (btn, "") + 
        //    ";this.value='Submitting';this.disabled = true;";
        //lbtn.OnClientClick = "this.innerText='Submitting';this.disabled = true;";
        //ibtn.OnClientClick = ClientScript.GetPostBackEventReference (ibtn, "") +
        //    ";this.alt='Submitting';this.disabled = true;";        
    }
    protected 
void btn_Click (object sender, EventArgs e)
    {
        System.Threading.Thread.Sleep (
2000);
        Label1.Text 
= DateTime.Now.ToString ();
    }

    protected 
void lbtn_Click (object sender, EventArgs e)
    {
        LinkButtonClickCount
++;
        System.Threading.Thread.Sleep (
2000);
        Label1.Text 
= "link button:" + DateTime.Now.ToString ()
            
+ "<br/>count:" + LinkButtonClickCount.ToString ();
    }

    protected 
void ibtn_Click (object sender, ImageClickEventArgs e)
    {
        ImageButtonClickCount
++;
        System.Threading.Thread.Sleep (
2000);
        Label1.Text 
= "image button:" + DateTime.Now.ToString ()
            
+ "<br/>count:" + ImageButtonClickCount.ToString ();
    }

    
int LinkButtonClickCount
    {
        get
        {
            object tmp 
= ViewState["LinkButtonClickCount"];
            
return (tmp == null? 0 : (int)tmp;
        }
        set { ViewState[
"LinkButtonClickCount"= value; }
    }
    
int ImageButtonClickCount
    {
        get
        {
            object tmp 
= ViewState["ImageButtonClickCount"];
            
return (tmp == null? 0 : (int)tmp;
        }
        set { ViewState[
"ImageButtonClickCount"= value; }
    }
</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    
<title>无标题页</title>
</head>
<body>
    
<form id="form1" runat="server">
        
<div>
            
<asp:Button ID="btn" runat="server" Text="What time is it, please!" 
            OnClick
="btn_Click" />
            
<asp:LinkButton ID="lbtn" runat="server" OnClick="lbtn_Click">
        What time is it, please!
</asp:LinkButton>
            
<asp:ImageButton ID="ibtn" runat="server" 
              AlternateText
="What time is it, please!"
              Height
="30px" OnClick="ibtn_Click" 
              ImageUrl
="http://www.ikea.com/ms/img/menu/products/32x32/clocks_32x32.gif" 
            
/>
            
<br />
            
<asp:Label ID="Label1" runat="server" Text=""></asp:Label>
        
</div>
    
</form>
</body>
</html>


posted on 2007-11-07 11:35  Easy Company  阅读(1050)  评论(0编辑  收藏  举报

导航