1

Ceci est lié au code ASP classique. Une page récupère des données pour un ProjectCode particulier.Comment afficher les données de la procédure stockée dans une liste déroulante dans ASP classique?

Il existe un champ de texte général indiquant l'emplacement du site pour le code de projet sélectionné. Je veux le changer en liste déroulante, afin qu'un utilisateur puisse changer l'emplacement du site à partir des options disponibles (extraites de la base de données), puis l'enregistrer. En outre, lors du chargement de la page, l'emplacement du code de projet pour cette entrée particulière doit être sélectionné.

J'ai ajouté le code suivant à ma page, mais cela ne fonctionne pas (certainement je suis nouveau à ASP classique).

strSQL = "SP_GET_SiteLocation" 
    Set rsSiteList = RunSQLQuery(strSQL) 

    'show the list 
    If Not rsSiteList.EOF Then 
    Do While NOT rs.EOF 
    SiteLocationList= SiteLocationList & "<option value="">" & rs("LOCATION") & "</option>" 
    rs.MoveNext 

En outre, sur un clic de bouton Enregistrer, je dois envoyer la chute sélectionnée vers le bas la valeur de mettre à jour la requête.

Répondre

1

Vous utilisez un nom incorrect pour la variable recordset ..

vous l'avez nommé rsSiteList mais vous l'utiliser comme rs

Do While NOT rsSiteList.EOF 
    SiteLocationList= SiteLocationList & "<option value="">" & rsSiteList("LOCATION") & "</option>" 
    rsSiteList.MoveNext 

Mise à jour

Vous construisez une chaîne avec toutes les options ..

vous devriez écrire dans la page à un moment .. response.write(SiteLocationList)

ou écrire le <options> directement à la page ..

<select name="somename"><% 
    Do While NOT rsSiteList.EOF 
    %> 
     <option value=""><%=rsSiteList("LOCATION")%></option> 
    <% 
     rsSiteList.MoveNext 
    Loop 
    %> 
</select> 

mise à jour 2

Je ne sais pas pourquoi vous ne voulez pas imprimer les options quand vous les lisez depuis le jeu d'enregistrements mais préférez faire une énorme chaîne à la place et l'imprimer à la fin ... c'est le même chose, mais beaucoup plus propre ..

Les éléments suivants doivent sélectionner l'emplacement qui correspond aux rsReqDetails (« AppReqSiteID »)

<td> 
<% 
    strSQL="SP_EPAPM_GET_SiteLocation" 
    Set rsSiteList=RunSQLQuery(strSQL) 
    selectedValue = rsReqDetails("AppReqSiteID") 
    If Not rsSiteList.EOF Then 
    Do While NOT rsSiteList.EOF 
     loc = rsSiteList("LOCATION") 
     if loc <> selectedValue then 
     optionOpen = "<option>" 
     else 
     optionOpen = "<option selected=""selected"">" 
     end if 
     optionClose = "</option>" 
     SiteLocationList=SiteLocationList & optionOpen & rsSiteList("LOCATION") & optionClose 
     rsSiteList.MoveNext 
    Loop 
    End If 
    %> 
    <select id="SiteLocationList" NAME="SiteLocationList"> 
    <%response.write(SiteLocationList)%> 
    </select> 
</td> 

En général, vous devez regarder l'imbrication de html comme il peut tout gâcher . Aussi, vous devez lire un peu sur les interactions entre ASP et HTML ...

+0

@RMN, réponse mis à jour .. (* vous n'écrivez jamais les options dans la page *) –

+0

Merci Gaby. Il semble que je me rapproche de ça. Je ne veux pas ajouter les champs en tant que valeur statique. "Lieu" est la valeur que je reçois du processus stocké dont j'ai besoin dans le menu déroulant. J'ai ajouté response.write (SiteLocationList) juste au-dessus de rsSiteList.MoveNext et il m'a montré 3 entrées dans le menu déroulant, reste toutes dans une ligne à l'extérieur de la liste déroulante. Je souhaite également que la valeur sélectionnée dans <% = rsReqDetails ("AppReqSiteID")%> soit sélectionnée par défaut dans la liste déroulante. – RMN

+0

@RMN, n'imprimez pas SiteLocationList depuis l'intérieur de la boucle, car vous y ajoutez des options, donc chaque fois que vous l'imprimez, toutes les options seront à nouveau augmentées de un. Aussi, qu'est ce que le <% = rsReqDetails ("AppReqSiteID")%> '? un autre jeu d'enregistrements? et cette valeur devrait être vérifiée avec quoi? votre jeu d'enregistrements 'rsSiteList' a-t-il aussi des valeurs d'id quelque part? –

0

Vous avez presque, vous êtes absent le tag "select":

strSQL = "SP_GET_SiteLocation" 
Set rsSiteList = RunSQLQuery(strSQL) 

'show the list 
If Not rsSiteList.EOF Then %> 
<select><%Do While NOT rs.EOF SiteLocationList= SiteLocationList & "<option value="">" & rs("LOCATION") & "</option>" 
rs.MoveNext %> 
</select> 
+0

Oui, ceci affiche la liste déroulante, mais la liste déroulante vide :( – RMN

Questions connexes