Standardmäßig ist es umständlich eine Telerik RadComboBox zu validieren, da diese nicht als klassische ASP.NET Dropdownliste sondern als Input-Feld mit dazu passenden Layern gerendert wird.
Hier ein Beispiel wie man eine Telerik RadComboBox clientseitig per Javascript validieren kann:
Zunächst die Telerik RadComboBox mit einem klassischen CustomValidator:
<telerik:RadComboBox ID="ddlAnrede"
runat="server" Skin="Telerik" Width="200px"
DataTextField="Value"
DataValueField="Key"
OnClientBlur="validateCombo"
SelectedValue='<%# Bind("Anrede") %>'>
<Items>
<telerik:RadComboBoxItem TextBitte wählen” Value="" runat="server" />
<telerik:RadComboBoxItem Text="Herr" Value="Herr" runat="server" />
<telerik:RadComboBoxItem Text="Frau" Value="Frau" runat="server" />
</Items>
</telerik:RadComboBox>
<span style='color:Red'>
<asp:CustomValidator ID="CustomValidator2"
style='visibility:hidden'
runat="server"
ErrorMessage=" *"
validationgroup="insert"
ClientValidationFunction="validateComboBox" >
</asp:CustomValidator>
</span>
Diese RadCombobox wird mittels der Javascript-Funktion “validateComboBox” validiert:
<script type="text/javascript">
function validateComboBox(source, args) {
args.IsValid = false;
var combo = $find('<%= getClientID("ddlAnrede") %>');
var value = combo.get_value();
var spanErrorAnrede = document.getElementById('<%= getClientID("CustomValidator1") %>');
if (value.length == 0) {
spanErrorAnrede.style.visibility = 'visible';
args.IsValid = false;
}
else {
spanErrorAnrede.style.visibility = 'hidden';
args.IsValid = true;
}
}
</script>
Hat man mehrere RadComboboxen in einem Formular oder befindet sich diese in einem Listview – und die ID lässt ich nicht mittels der Methode getClientID ermitteln - dann kann man folgende Javascript-Funktion für die Validierung verrwenden:
<telerik:RadCodeBlock ID="RadCodeBlock789" runat="server">
<script type="text/javascript">
function Validate(source, clientside_argument) {
var sourceElement = document.getElementById(source.id);
var comboInput = document.getElementByI(sourceElement.controltovalidate + "_Input");
if (clientside_argument.Value == "--- Bitte wählen ---") {
comboInput.style.background = "red";
clientside_argument.IsValid = false;
}
else {
comboInput.style.background = "";
clientside_argument.IsValid = true;
}
}
</script>
</telerik:RadCodeBlock>