protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
if(EnableClientScript) {
var maskExt = (MaskedEditExtender)FindControl(ControlExtender);
var target = (TextBox)maskExt.FindControl(ControlToValidate);
int firstMaskPos = -1;
int lastMaskPosition = -1;
if(maskExt.ClearMaskOnLostFocus) {
firstMaskPos = 0;
lastMaskPosition = MaskedEditCommon.GetValidMask(maskExt.Mask).Length + 1;
}
else {
firstMaskPos = MaskedEditCommon.GetFirstMaskPosition(maskExt.Mask);
lastMaskPosition = MaskedEditCommon.GetLastMaskPosition(maskExt.Mask) + 1;
}
ScriptManager.RegisterExpandoAttribute(this, ClientID, "IsMaskedEdit", true.ToString().ToLower(CultureInfo.InvariantCulture), true);
ScriptManager.RegisterExpandoAttribute(this, ClientID, "ValidEmpty", IsValidEmpty.ToString().ToLower(CultureInfo.InvariantCulture), true);
ScriptManager.RegisterExpandoAttribute(this, ClientID, "MaximumValue", MaximumValue, true);
ScriptManager.RegisterExpandoAttribute(this, ClientID, "MinimumValue", MinimumValue, true);
ScriptManager.RegisterExpandoAttribute(this, ClientID, "InitialValue", InitialValue, true);
ScriptManager.RegisterExpandoAttribute(this, ClientID, "ValidationExpression", ValidationExpression, true);
ScriptManager.RegisterExpandoAttribute(this, ClientID, "ClientValidationFunction", ClientValidationFunction, true);
ScriptManager.RegisterExpandoAttribute(this, ClientID, "TargetValidator", target.ClientID, true);
ScriptManager.RegisterExpandoAttribute(this, ClientID, "EmptyValueMessage", EmptyValueMessage, true);
ScriptManager.RegisterExpandoAttribute(this, ClientID, "EmptyValueText", EmptyValueBlurredText, true);
ScriptManager.RegisterExpandoAttribute(this, ClientID, "MaximumValueMessage", MaximumValueMessage, true);
ScriptManager.RegisterExpandoAttribute(this, ClientID, "MaximumValueText", MaximumValueBlurredMessage, true);
ScriptManager.RegisterExpandoAttribute(this, ClientID, "MinimumValueMessage", MinimumValueMessage, true);
ScriptManager.RegisterExpandoAttribute(this, ClientID, "MinimumValueText", MinimumValueBlurredText, true);
ScriptManager.RegisterExpandoAttribute(this, ClientID, "InvalidValueMessage", InvalidValueMessage, true);
ScriptManager.RegisterExpandoAttribute(this, ClientID, "InvalidValueText", InvalidValueBlurredMessage, true);
ScriptManager.RegisterExpandoAttribute(this, ClientID, "InvalidValueCssClass", maskExt.OnInvalidCssClass, true);
ScriptManager.RegisterExpandoAttribute(this, ClientID, "CssBlurNegative", maskExt.OnBlurCssNegative, true);
ScriptManager.RegisterExpandoAttribute(this, ClientID, "CssFocus", maskExt.OnFocusCssClass, true);
ScriptManager.RegisterExpandoAttribute(this, ClientID, "CssFocusNegative", maskExt.OnFocusCssNegative, true);
ScriptManager.RegisterExpandoAttribute(this, ClientID, "TooltipMessage", TooltipMessage, true);
ScriptManager.RegisterExpandoAttribute(this, ClientID, "FirstMaskPosition", firstMaskPos.ToString(CultureInfo.InvariantCulture), true);
if(!String.IsNullOrEmpty(maskExt.CultureName) && maskExt.OverridePageCulture)
ControlCulture = CultureInfo.GetCultureInfo(maskExt.CultureName);
else
ControlCulture = CultureInfo.CurrentCulture;
switch(maskExt.MaskType) {
case MaskedEditType.None: {
ScriptManager.RegisterExpandoAttribute(this, ClientID, "evaluationfunction", "MaskedEditValidatorNone", true);
ScriptManager.RegisterExpandoAttribute(this, ClientID, "LastMaskPosition", lastMaskPosition.ToString(CultureInfo.InvariantCulture), true);
break;
}
case MaskedEditType.Number: {
var attibCu = ControlCulture.NumberFormat.CurrencySymbol;
var attibDc = ControlCulture.NumberFormat.CurrencyDecimalSeparator;
var attibTh = ControlCulture.NumberFormat.CurrencyGroupSeparator;
if(maskExt.DisplayMoney != MaskedEditShowSymbol.None)
lastMaskPosition += maskExt.CultureCurrencySymbolPlaceholder.Length + 1;
if(maskExt.AcceptNegative != MaskedEditShowSymbol.None)
if(maskExt.DisplayMoney != MaskedEditShowSymbol.None)
lastMaskPosition++;
else
lastMaskPosition += 2;
ScriptManager.RegisterExpandoAttribute(this, ClientID, "Money", attibCu, true);
ScriptManager.RegisterExpandoAttribute(this, ClientID, "Decimal", attibDc, true);
ScriptManager.RegisterExpandoAttribute(this, ClientID, "Thousands", attibTh, true);
ScriptManager.RegisterExpandoAttribute(this, ClientID, "evaluationfunction", "MaskedEditValidatorNumber", true);
ScriptManager.RegisterExpandoAttribute(this, ClientID, "LastMaskPosition", lastMaskPosition.ToString(CultureInfo.InvariantCulture), true);
break;
}
case MaskedEditType.DateTime: {
//date
var attibSep = ControlCulture.DateTimeFormat.DateSeparator;
var arrDate = ControlCulture.DateTimeFormat.ShortDatePattern.Split(new string[] { ControlCulture.DateTimeFormat.DateSeparator }, StringSplitOptions.None);
var attibFmt = arrDate[0].Substring(0, 1).ToUpper(ControlCulture);
attibFmt += arrDate[1].Substring(0, 1).ToUpper(ControlCulture);
attibFmt += arrDate[2].Substring(0, 1).ToUpper(ControlCulture);
attibFmt = (maskExt.UserDateFormat == MaskedEditUserDateFormat.None ? attibFmt : maskExt.UserDateFormat.ToString());
ScriptManager.RegisterExpandoAttribute(this, ClientID, "DateSeparator", attibSep, true);
ScriptManager.RegisterExpandoAttribute(this, ClientID, "DateFormat", attibFmt, true);
ScriptManager.RegisterExpandoAttribute(this, ClientID, "Century", maskExt.Century.ToString(CultureInfo.InvariantCulture), true);
//time
attibSep = ControlCulture.DateTimeFormat.TimeSeparator;
var attibSyb = String.Empty;
if(String.IsNullOrEmpty(ControlCulture.DateTimeFormat.AMDesignator + ControlCulture.DateTimeFormat.PMDesignator))
attibSyb = String.Empty;
else
attibSyb = ControlCulture.DateTimeFormat.AMDesignator + ";" + ControlCulture.DateTimeFormat.PMDesignator;
attibSyb = (maskExt.UserTimeFormat == MaskedEditUserTimeFormat.None ? attibSyb : String.Empty);
if(maskExt.AcceptAMPM)
if(!String.IsNullOrEmpty(attibSyb)) {
var sep = Char.Parse(attibSep);
var arrSyb = attibSyb.Split(sep);
lastMaskPosition += arrSyb[0].Length + 1;
}
ScriptManager.RegisterExpandoAttribute(this, ClientID, "TimeSeparator", attibSep, true);
ScriptManager.RegisterExpandoAttribute(this, ClientID, "AmPmSymbol", attibSyb, true);
ScriptManager.RegisterExpandoAttribute(this, ClientID, "evaluationfunction", "MaskedEditValidatorDateTime", true);
ScriptManager.RegisterExpandoAttribute(this, ClientID, "LastMaskPosition", lastMaskPosition.ToString(CultureInfo.InvariantCulture), true);
break;
}
case MaskedEditType.Date: {
var attibSep = ControlCulture.DateTimeFormat.DateSeparator;
var arrDate = ControlCulture.DateTimeFormat.ShortDatePattern.Split(new string[] { ControlCulture.DateTimeFormat.DateSeparator }, StringSplitOptions.None);
var attibFmt = arrDate[0].Substring(0, 1).ToUpper(ControlCulture);
attibFmt += arrDate[1].Substring(0, 1).ToUpper(ControlCulture);
attibFmt += arrDate[2].Substring(0, 1).ToUpper(ControlCulture);
attibFmt = (maskExt.UserDateFormat == MaskedEditUserDateFormat.None ? attibFmt : maskExt.UserDateFormat.ToString());
ScriptManager.RegisterExpandoAttribute(this, ClientID, "DateSeparator", attibSep, true);
ScriptManager.RegisterExpandoAttribute(this, ClientID, "DateFormat", attibFmt, true);
ScriptManager.RegisterExpandoAttribute(this, ClientID, "Century", maskExt.Century.ToString(CultureInfo.InvariantCulture), true);
ScriptManager.RegisterExpandoAttribute(this, ClientID, "evaluationfunction", "MaskedEditValidatorDate", true);
ScriptManager.RegisterExpandoAttribute(this, ClientID, "LastMaskPosition", lastMaskPosition.ToString(CultureInfo.InvariantCulture), true);
break;
}
case MaskedEditType.Time: {
var attibSep = ControlCulture.DateTimeFormat.TimeSeparator;
var attibSyb = String.Empty;
if(String.IsNullOrEmpty(ControlCulture.DateTimeFormat.AMDesignator + ControlCulture.DateTimeFormat.PMDesignator))
attibSyb = String.Empty;
else
attibSyb = ControlCulture.DateTimeFormat.AMDesignator + ";" + ControlCulture.DateTimeFormat.PMDesignator;
attibSyb = (maskExt.UserTimeFormat == MaskedEditUserTimeFormat.None ? attibSyb : String.Empty);
if(maskExt.AcceptAMPM)
if(!String.IsNullOrEmpty(attibSyb)) {
var sep = Char.Parse(attibSep);
var arrSyb = attibSyb.Split(sep);
lastMaskPosition += arrSyb[0].Length + 1;
}
ScriptManager.RegisterExpandoAttribute(this, ClientID, "TimeSeparator", attibSep, true);
ScriptManager.RegisterExpandoAttribute(this, ClientID, "AmPmSymbol", attibSyb, true);
ScriptManager.RegisterExpandoAttribute(this, ClientID, "evaluationfunction", "MaskedEditValidatorTime", true);
ScriptManager.RegisterExpandoAttribute(this, ClientID, "LastMaskPosition", lastMaskPosition.ToString(CultureInfo.InvariantCulture), true);
break;
}
}
}
}