自定義的ValidationSummary控制元件
一. 目的:
實現一個帶linked的ValidationSummary控制元件
二. 實現:
Code
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->///
/// 驗證控制元件
///
[ToolboxData("{0}:ValidationSummaryControl>")]
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
}
<!--
Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/
-->///
/// 驗證控制元件
///
[ToolboxData("{0}:ValidationSummaryControl>")]
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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Android自定義控制元件之自定義組合控制元件Android控制元件
- Android自定義控制元件——自定義屬性Android控制元件
- WPF 自定義控制元件的坑(蠢的:自定義控制元件內容不顯示)控制元件
- 自定義Switch控制元件控制元件
- 自定義控制元件ViewPager控制元件Viewpager
- 控制元件自定義位置控制元件
- 如何自定義控制元件控制元件
- C#自定義控制元件:如果定義控制元件的事件C#控制元件事件
- 4. 自定義控制元件(4) --- 自定義屬性控制元件
- Android自定義控制元件之自定義屬性Android控制元件
- 自定義DropDownList控制元件的實現控制元件
- Flutter 之 自定義控制元件Flutter控制元件
- iOS自定義控制元件 AlertViewiOS控制元件View
- iOS自定義控制元件 SegmentiOS控制元件
- WPF Blend 自定義控制元件控制元件
- 自定義彈幕控制元件控制元件
- 自定義分頁控制元件控制元件
- winform 自定義容器控制元件ORM控制元件
- 自定義控制元件之歌詞RCL控制元件控制元件
- Android自定義組合控制元件之自定義屬性Android控制元件
- 自定義TextBox控制元件的實現控制元件
- .net自定義控制元件下拉的屬性控制元件
- 簡單的自定義表單控制元件控制元件
- Flutter 自定義縮放控制元件Flutter控制元件
- iOS自定義控制元件 SlideriOS控制元件IDE
- Qt實現自定義控制元件QT控制元件
- android:建立自定義控制元件Android控制元件
- 自定義UIView UITableViewCell等控制元件UIView控制元件
- 自定義下拉選單控制元件控制元件
- iOS自定義控制元件:簡易下拉控制元件iOS控制元件
- android 自定義控制元件 自定義屬性詳細介紹Android控制元件
- 如何開發FineReport的自定義控制元件?控制元件
- UWP自定義ToggleButton控制元件的樣式控制元件
- 細說 Angular 的自定義表單控制元件Angular控制元件
- (Android自定義控制元件)Android自定義狀態提示圖表Android控制元件
- QT常用控制元件(三)——自定義控制元件封裝QT控制元件封裝
- UWP 自定義密碼框控制元件密碼控制元件
- AngularJS自定義表單控制元件AngularJS控制元件