在云那方

首页 新随笔 联系 订阅 管理
Button1.Attributes.Add("onclick",   "this.value='正在提交中,请等待……';this.disabled=true;"   +   this.GetPostBackEventReference(Button1));

 

编码成自定义控件使用,下载:Control.rar

代码
namespace Control
{
    
using System;
    
using System.Text;
    
using System.Web.UI;
    
using System.Web.UI.WebControls;

    
public class Button : System.Web.UI.WebControls.Button
    {
        
private string _clientcheck;
        
private string _textonclick = "提交中…";

        
protected override void Render(HtmlTextWriter writer)
        {
            StringBuilder builder 
= new StringBuilder();
            builder.Append(
this.OnClientClick);
            
if (!string.IsNullOrEmpty(this._clientcheck))
            {
                builder.Append(
"if(!(").Append(this._clientcheck).Append(")) return false;");
            }
            
if (!string.IsNullOrEmpty(this._textonclick))
            {
                builder.Append(
"this.value=\"").Append(this._textonclick).Append("\";");
            }
            builder.Append(
"if(null==window.onunload) window.onunload = function(){};");
            builder.Append(
"this.disabled = true;").Append(this.Page.GetPostBackEventReference(this));
            
this.OnClientClick = builder.ToString();
            
base.Render(writer);
        }

        
public string ClientCheck
        {
            
set
            {
                
this._clientcheck = value;
            }
        }

        
public string TextOnClick
        {
            
set
            {
                
this._textonclick = value;
            }
        }
    }
}


namespace Control
{
    
using System;
    
using System.Text;
    
using System.Web.UI;
    
using System.Web.UI.WebControls;

    
public class ImageButton : System.Web.UI.WebControls.ImageButton
    {
        
private string _clientcheck;

        
protected override void Render(HtmlTextWriter writer)
        {
            StringBuilder builder 
= new StringBuilder();
            builder.Append(
this.OnClientClick);
            
if (!string.IsNullOrEmpty(this._clientcheck))
            {
                builder.Append(
"if(!(").Append(this._clientcheck).Append(")) return false;");
            }
            builder.Append(
"if(null==window.onunload) window.onunload = function(){};");
            builder.Append(
"this.disabled = true;").Append(this.Page.GetPostBackEventReference(this));
            
this.OnClientClick = builder.ToString();
            
base.Render(writer);
        }

        
public string ClientCheck
        {
            
set
            {
                
this._clientcheck = value;
            }
        }
    }
}

 

 

 web.config配置

        <pages>
            
<controls>
                
<add tagPrefix="cc" namespace="Control" assembly="Control"/>
            
</controls>
        
</pages>

 

单独使用:

<cc:Button ID="Button1" runat="server" Text="Button" ClientCheck="Check()" OnClick="Button1_Click"/>

验证控件和js同时使用

<cc:Button ID="Button1" runat="server" Text="Button" ClientCheck="Check() && Page_ClientValidate()" OnClick="Button1_Click"/>

 

其中Check()为自定义js函数

posted on 2008-10-23 11:03  Rich.T  阅读(1779)  评论(1编辑  收藏  举报