2010-11-15 8 views

Répondre

2

Vous pouvez le faire avec une routine CustomValidator.

<asp:CustomValidator ID="ListBox5ItemsValidator" runat="server" 
    OnServerValidate="ListBox5ItemsValidator_ServerValidate" 
    ClientValidationFunction="ListBox5ItemsValidator_ClientValidate" 
    ControlToValidate="MyListBox"> 
</asp:CustomValidator> 

Code côté serveur:

protected void ListBox5ItemsValidator_ServerValidate(
     object source, ServerValidateEventArgs args) { 

    int selectionCount = 0; 
    foreach (ListItem item in MyListBox.Items) { 
     if (item.Selected) selectionCount++; 
    } 
    args.IsValid = (selectionCount >= 1 && selectionCount <= 5); 
} 

code côté client:

function ListBox5ItemsValidator_ClientValidate(sender, args) { 
    var selectionCount = $('#<% =MyListBox.ClientID %> option:selected').length; 
    args.IsValid = (selectionCount >= 1 && selectionCount <= 5); 
}; 

Remplacer MyListBox avec le nom réel de votre ListBox que vous souhaitez valider. Si votre ListBox est contenue dans d'autres contrôles de conteneur, vous devrez peut-être un peu plus de travail pour référencer le contrôle du côté du serveur et du client. Par exemple, si elle est contenue dans un contrôle FormView appelé FormView1, vous utilisez

ListBox MyListBox = (ListBox)FormView1.FindControl("MyListBox"); 
+0

J'ai essayé de mettre en œuvre l'événement du serveur CustomValidator, mais je reçois 'Message: Sys.ArgumentException: valeur ne doit pas être null pour les contrôles et les comportements. Nom du paramètre: element'. Je pense que cela a quelque chose à voir avec Ajax-ValidationCalloutExtender. –

+0

J'ai trouvé quelque chose à propos de ce problème, semble être un problème avec ValidationCalloutExtender et 'EnableClientScript =" false "'. http://ajaxcontroltoolkit.codeplex.com/workitem/17713?ProjectName=ajaxcontroltoolkit –

+0

Cette page décrit mieux le problème et fournit une solution (même pour des choses pas si triviales comme mon customvalidator): http: //www.junnark. com/Articles/Article0001.aspx Si vous pouviez fournir une fonction ClientValidationFunction avec jQuery, je répondrai à cette question en réponse. Je vous remercie. –

Questions connexes