自定义的ValidationSummary控件

一. 目的:

     实现一个带linked的ValidationSummary控件

二. 实现:

     

ContractedBlock.gif ExpandedBlockStart.gif Code
/// <summary>
    
/// 验证控件
    
/// </summary>
    [ToolboxData("<{0}:ValidationSummaryControl runat=server></{0}:ValidationSummaryControl>")]
    
public class ValidationSummaryControl : ValidationSummary
    {
        
#region 变量
        
/// <summary>
        
/// 设置控件焦点的脚本
        
/// </summary>
        private static readonly string strJs = @"function setFocus(control)
                                           {
                                               var controlToValidate = document.getElementById(control);
                                               controlToValidate.focus();
                                           }  
";
        
#endregion       

        
#region 事件

        
protected override void OnPreRender(EventArgs e)
        {
            
base.OnPreRender(e);

            
//注册脚本
            RegisterScript();           
        }

        
protected override void Render(HtmlTextWriter writer)
        {
            MakeClickableErrorMessage();

            
base.Render(writer);
        }

        
#endregion  
        
        
#region 私有方法

        
/// <summary>
        
/// 让错误信息能够定位相应控件
        
/// </summary>
        private void MakeClickableErrorMessage()
        {
            
foreach (BaseValidator validator in this.Page.Validators)
            {
                
if (validator.ControlToValidate == string.Empty || validator.ErrorMessage == string.Empty)
                {
                    
continue;
                }

                
//获取需验证的控件
                Control controlToValidate = validator.Parent.FindControl(validator.ControlToValidate);
                
if (null != controlToValidate)
                {
                    
string clientID = controlToValidate.ClientID;
                    
string script = string.Format("<a href= \"javascript:setFocus('{0}');\">{1}</a>", clientID, validator.ErrorMessage);
                    
//给错误信息添加linked
                    validator.ErrorMessage = script;
                    validator.Display 
= ValidatorDisplay.None;
                }
            }
        }

        
/// <summary>
        
/// 注册脚本
        
/// </summary>
        private void RegisterScript()
        {
            
if (!Page.ClientScript.IsClientScriptBlockRegistered(this.GetType(), "__ValidationSummaryControl"))
            {
                Page.ClientScript.RegisterClientScriptBlock(
this.GetType(), "__ValidationSummaryControl", strJs, true);
            }
        }

        
#endregion
    }

 

一个带有linked的ValidationSummary控件就写好了。

三. 说明:

     其中MakeClickableErrorMessage方法是可以放在OnPreRender方法中的,但是与我后来做得一个带有验证控件的TextBox有冲突,所以把MakeClickableErrorMessage方法写到了Render方法中去了。

转载于:https://www.cnblogs.com/Agger/archive/2009/01/16/1376876.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值