ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 自定义的ValidationSummary控件

自定义的ValidationSummary控件

原创 Linux操作系统 作者:iDotNetSpace 时间:2009-01-16 13:34:45 0 删除 编辑

一. 目的:

     实现一个带linked的ValidationSummary控件

二. 实现:

     


<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

-->/// 
    
/// 验证控件
    
/// 

    [ToolboxData("<{0}:ValidationSummaryControl runat=server>")]
    
public class ValidationSummaryControl : ValidationSummary
    {
        
#region 变量
        
/// 
        
/// 设置控件焦点的脚本
        
/// 

        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 私有方法

        
/// 
        
/// 让错误信息能够定位相应控件
        
/// 

        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(""javascript.:setFocus('{0}');\">{1}", clientID, validator.ErrorMessage);
                    
//给错误信息添加linked
                    validator.ErrorMessage = script;
                    validator.Display 
= ValidatorDisplay.None;
                }
            }
        }

        
/// 
        
/// 注册脚本
        
/// 

        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方法中去了。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/12639172/viewspace-539807/,如需转载,请注明出处,否则将追究法律责任。

下一篇: C# string Format示例
请登录后发表评论 登录
全部评论

注册时间:2008-01-04

  • 博文量
    2376
  • 访问量
    5347881