2010-04-30 15 views
1

J'ai trois listes déroulantes, Région, District et Ville. Je souhaite que la liste déroulante District ait une option "Sélectionner tout" afin que l'utilisateur puisse obtenir toutes les villes de la région, sinon afficher la ville en fonction du district sélectionné. Ma requête ressemble à ceci:Liste déroulante avec une option "Sélectionner tout"

IF @district =-2 THEN 
(SELECT DISTINCT city 
FROM myTable 
WHERE RIGHT(Region, 3) = ?) 
ORDER BY city) 
ELSE 
(select DISTINCT city 
    FROM myTable WHERE District = ?) 
Order by city 

J'utilise vb.net/sql je ne pouvais pas trouver des scénarios de cas complexes dans ma recherche non plus. Toutes suggestions seraient appréciées!

+3

Quelle est votre question? – RedFilter

Répondre

1

Je ne suis pas vraiment sûr de ce que votre question est, mais notez que la requête peut simplifiée comme suit:

SELECT DISTINCT city 
FROM myTable 
WHERE (@district = -2 and RIGHT(Region, 3) = ?) 
    or (@district <> -2 and District = ?) 
ORDER BY city 
1

2 façons, soit ajouter une instruction select à votre SQL, ou ajoutez l'option dans le page_load using

if(!Page.IsPostBack) 
{ 
    DropDown1.Items.Insert(0, new ListItem("Select All", 0)); 

} 
+0

Alors que l'option doit être ajoutée au menu déroulant, ne savez pas comment cela résout le problème SQL. Il serait juste chercher WHERE District = '0' ne serait-il pas? – TheDPQ

+0

Je suis vraiment désolé de vous répondre si tard, mais je navigue au travail et comme ils ont implémenté OpenID, je n'ai pas pu l'utiliser (probablement un proxy). Dans cette situation, vous devrez coder votre instruction SQL pour accepter 0 comme 'tout' en utilisant quelque chose comme WHERE (@ District = 0 OU @ District = District) –