2010-05-30 5 views
3

J'ai deux ensembles de listes déroulantes pour la date de début et la date de fin. Chaque date est créée en sélectionnant un mois, un jour et une année à partir de trois listes déroulantes distinctes. J'ai actuellement RequiredFieldValidators sur toutes les listes déroulantes (qui montre juste un * si rien n'a encore été sélectionné), mais je dois valider que la date de fin est supérieure à la date de début. Je peux m'occuper de la logique derrière la comparaison des dates, mais en ce qui concerne la méthode de validation utilisée, quelqu'un peut-il m'aider (je dois essentiellement valider 6 listes déroulantes en même temps)? J'ai essayé une validation personnalisée en utilisant le javascript côté client, mais je n'ai pas réussi à le faire fonctionner. Pouvez-vous même valider plusieurs listes déroulantes à l'aide des contrôles de validation ASP.NET? (ce qui est ce que je voudrais faire - je peux toujours écrire le javascript, mais essayait de rester loin de cela).ASP.NET: Quelle est la meilleure façon de valider 3 listes déroulantes utilisées pour sélectionner une date (mois, jour, année)?

Merci.

Répondre

4

Utilisez un validateur personnalisé sans le contrôle de validation champ terminé puis utilisez dans votre page ASPX:

<script type="text/javascript"> 
<!-- 
    ValidatorHookupControlID("<%= ctrl1.ClientID %>", 
    $get("<%= customValidator.ClientID %>")); 
    ValidatorHookupControlID("<%= ctrl2.ClientID %>", 
    $get("<%= customValidator.ClientID %>")); 
    ValidatorHookupControlID("<%= ctrl3.ClientID %>", 
    $get("<%= customValidator.ClientID %>")); 
//--> 
</script> 

Edit: J'ai trouvé un tutoriel qui explique mieux ce que Je veux dire here

+0

Je n'ai jamais su que ceux-ci existaient. Merci! – TheGeekYouNeed

1

Vous devriez envisager d'utiliser un contrôle de calendrier au lieu de trois listes déroulantes. Cela donnera à vos utilisateurs une meilleure expérience, et la plupart des contrôles de calendrier se chargeront automatiquement des problèmes de validation de la date, tels que les années bissextiles, les noms localisés, etc. pour vous. Côté serveur, vous obtiendrez une valeur DateTime valide, et vous pourrez utiliser des opérateurs de comparaison standard pour déterminer si une date est antérieure à l'autre.

Telerik a un contrôle de calendrier particulièrement bon. Voici une démo:

http://demos.telerik.com/aspnet-ajax/calendar/examples/datepicker/validation/defaultcs.aspx

+1

Même si je suis d'accord avec le message ici, ça ne vaut pas le coup, il y a beaucoup d'options ** gratuites ** pour faire ça qui sont excellentes aussi ... c'est côté client, pas forcément être ASP.Net lié à tous. –

+0

Les dates historiques comme les anniversaires ont aussi tendance à être pénibles avec certains contrôles du calendrier en raison de tous les appels nécessaires pour remonter dans le temps. Parfois, quelques DDL est une meilleure option. Bien que j'apprécie la perspective. – Laramie

+0

Salut Nick, il existe en effet de bonnes bibliothèques de calendrier gratuites pour les clients (par exemple jQuery UI Datepicker), mais même avec ces bibliothèques, vous devez toujours prendre en compte la validation côté serveur de l'entrée utilisateur. Vous devez avancer prudemment ici si vous devez prendre en charge plusieurs formats de date pour différents paramètres régionaux; une bonne intégration côté serveur avec .NET La globalisation est donc un avantage ... un contrôle peut dire "ok, je vais utiliser ja-JP pour afficher ce calendrier, donc mieux vaut analyser le format de date en ja-JP quand ça me revient! –

Questions connexes