J'ai une extension auto complète sur ma page web qui, lorsqu'elle est tapée, obtient des informations sur l'adresse à partir d'une base de données. J'ai besoin de faire deux appels à la base de données, un pour obtenir une liste de brèves descriptions d'adresses et un autre pour obtenir toutes les informations sur l'adresse une fois qu'une description d'adresse est sélectionnée. Pour effectuer le second appel, je dois obtenir un identifiant unique à partir du premier appel (si cela a un sens). Jusqu'à présent, je dispose d'une extension auto complète qui, lorsque je saisis des informations sur l'adresse, affiche la liste des descriptions, ce qui est bien, mais je n'ai aucun moyen de renvoyer l'ID unique (que je ne veux pas montrer à l'utilisateur). Existe-t-il un moyen de renvoyer l'identifiant unique dans le service Web sans que l'utilisateur le voie ?
Réponse
Trop de publicités?Je ne suis pas tout à fait sûr de ce que vous voulez dire ou de votre niveau, donc ce n'est peut-être pas ce que vous recherchez :
Lors de votre appel (ajax ?) au serveur pour obtenir la liste des descriptions, vous obtiendrez probablement une simple liste de chaînes normales représentant les descriptions possibles. Au lieu d'utiliser des chaînes normales, utilisez quelque chose comme JSON, où vous entrez à la fois l'id et le nom. Vous pouvez alors remplir votre liste d'autocompléments en utilisant quelque chose comme
foreach(var obj in suggestions)
addToList(obj.Name);
Ayez une collection avec les suggestions originales quelque part en mémoire (comme la variable 'suggestions') ; et quand quelqu'un sélectionne un élément autosuggéré, vous pouvez retrouver l'élément dans votre tableau original.
foreach(var obj in suggestions)
if(obj.Name == document.getElementById('suggestionTextbox').value) return obj.id;
Avec l'id, vous pouvez faire un nouvel appel à la base de données en utilisant PageMethods ou d'autres types de trucs Ajax. Lorsque vous utilisez PageMethods (Google pour une définition exacte), utilisez quelque chose comme ceci :
public static object GiveExtraInfo(string id)
{ //look up data in database and return the required object }
Vous pouvez alors faire en JavaScript
var content = PageMethods.GiveExtraInfo(/*the id you selected before */);
Vous pouvez maintenant utiliser le contenu où vous le souhaitez dans la page.