2011-02-23 4 views
5

J'ai une liste déroulante que je charge du côté du serveur.Validateur pour la liste déroulante dans asp.net

<asp:DropDownList ID="ddlOne" runat="server" CssClass="dropDrownClass" Width="80%"> 

En côté serveur, après avoir chargé le menu déroulant J'ajoute

- S'il vous plaît Choisir -

Je veux vous assurer que si cela est sélectionné que moi affiche le message d'erreur. Pour que je l'ai écrit

<asp:CompareValidator ID="CompareValidator1" runat="server" 
          ControlToValidate="ddlOne" ValueToCompare="-- Please Select --" Operator="Equal" Type="String" ErrorMessage="CompareValidator"></asp:CompareValidator> 
         <asp:ValidatorCalloutExtender ID="ValidatorCalloutExtender1" TargetControlID="CompareValidator1" runat="server"> 
         </asp:ValidatorCalloutExtender> 

Mais il me montre le message d'erreur chaque fois que je suis rien sélectionner dans la liste déroulante. et quand je l'ai changé le validateur pour

<asp:CompareValidator ID="CompareValidator1" runat="server" 
          ControlToValidate="ddlOne" ValueToCompare="0" Operator="Equal" Type="Integer" ErrorMessage="CompareValidator"></asp:CompareValidator> 

Je reçois le message d'erreur sur chaque sélection, à l'exception de la première qui est - S'il vous plaît Sélectionnez -.

S'il vous plaît laissez-moi savoir comment valider l'élément poing de la liste déroulante

NUMÉRO 2

Je reçois un message double, une dans la liste déroulante [qui affiche l'erreur « Carson63000 » en rouge ] et un en tant que pop up [appel du validateur]. Même message Je souhaite que seule la légende du validateur affiche le message.

Répondre

11

Votre validateur compare la valeur de l'élément sélectionné de la liste déroulante, pas le texte . Le plus simple est souvent d'avoir une chaîne vide pour la valeur de l'élément "Veuillez sélectionner", d'avoir une valeur non vide pour les autres éléments, puis d'utiliser simplement un RequiredFieldValidator.

De plus, un CompareValidator avec ValueToCompare="-- Please Select --" et signifie: vérifier la valeur de la liste déroulante, et valider qu'elle est égale à "- Please Select -"; sinon, affichez l'erreur. Quel est exactement le contraire de ce dont vous avez besoin - vous voudriez changer l'opérateur à Operator="NotEqual" si vous vouliez utiliser l'approche d'un CompareValidator.

+0

Il fonctionne très bien. Merci. Mais je reçois un double message. Un de l'extension d'accroche et un sous la liste déroulante. Je veux afficher le message une seule fois. – Chris

+1

@Chris, je crains de ne jamais avoir utilisé un ValidatorCalloutExtender. C'est une chose ASP.NET AJAX, non? Avez-vous essayé d'ajouter 'Display =" None "' à CompareValidator? – Carson63000

+0

notez que si la valeur à comparer était une chaîne vide, vous devrez utiliser un validateur de champ obligatoire (voir http://msdn.microsoft.com/en-us/library/db330ayw(v=vs.71).aspx) –

0

Modifier la valeur de l'opérateur :

<asp:CompareValidator ID="CompareValidator1" runat="server" 
    ControlToValidate="ddlOne" ValueToCompare="0" Operator="NotEqual" 
    Type="Integer" ErrorMessage="CompareValidator" /> 
Questions connexes