Hey Craig,
Telerik basically can't fix this issue because it is a .net bug.
I had to build a custom method that fires during the server side Save(). It iterates thru all
of the validators and evaluates them manually. If any of the validator's are invalid
we respond with an alert that lists which are invalid and then select the tab and multipage
based on the validation group. I've pasted some of the code below.
Let me know if you'd like to see more or have questions.
Good Luck.
protected
bool
CustomPageValidation()
{
bool
customPageIsValid = Page.IsValid;
try
{
if
(Page.IsValid)
//If the current tab you are on IsValid
{
//Reset Custom Validation Group to Empty String
cvCustomPageValidation.ErrorMessage =
"Validation Errors:"
;
cvCustomPageValidation.Text = cvCustomPageValidation.ErrorMessage;
cvCustomPageValidation.ValidationGroup =
""
;
//Fire All Required Field Validators
for
(
int
i = 0; i < Page.Validators.Count; i++)
{
BaseValidator val = (BaseValidator)Page.Validators[i];
if
(val.GetType().Name ==
"RequiredFieldValidator"
|| val.GetType().Name ==
"RegularExpressionValidator"
)
{
ValidateControl(val);
}
else
if
(val.GetType().Name ==
"CustomValidator"
)
{
CustomValidator cVal = (CustomValidator)Page.Validators[i];
if
(cVal.ClientValidationFunction ==
"ComboBoxCustomRequiredFieldValidator"
)
{
if
(cVal.ID !=
"cvDelayedReason"
&& cVal.ID !=
"cvDeniedReason"
&& cVal.ID !=
"cvReopenedReason"
)
{
ValidateControlCustomCBO(cVal);
}
else
{
//Use Custom Logic for these CV's
if
(cVal.ID ==
"cvDelayedReason"
&& chkDelayed.Checked ==
true
)
ValidateControlCustomCBO(cVal);
else
if
(cVal.ID ==
"cvDeniedReason"
&& chkDenied.Checked ==
true
)
ValidateControlCustomCBO(cVal);
else
if
(cVal.ID ==
"cvReopenedReason"
&& cboClaimStatus.SelectedItem !=
null
&& cboClaimStatus.SelectedValue ==
"2"
)
//Re-Open
ValidateControlCustomCBO(cVal);
}
}
}
}
}
if
(cvCustomPageValidation.ValidationGroup.Length > 0)
{
customPageIsValid =
false
;
claimTabs.SelectedIndex = Convert.ToInt32(cvCustomPageValidation.ValidationGroup);
rmpClaim.SelectedIndex = claimTabs.SelectedIndex;
}
}
catch
(Exception ex)
{
SimsException.ProcessException(ex2,
ref
lblMessages);
customPageIsValid =
false
;
}
return
customPageIsValid;
}
private
void
ValidateControl(BaseValidator val)
{
Control ctl = val.FindControl(val.ControlToValidate);
if
(!SIMSUtilities.ControlIsValid(ctl, val))
UpdateCustomPageValidator(val.ErrorMessage, val.ValidationGroup);
}