2009-09-14 6 views
0

J'ai un extendeur automatique complet sur ma page web qui, une fois saisi, obtient des informations d'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 d'adresse une fois qu'une description d'adresse est sélectionnée. Pour faire le second appel, je reçois un identifiant unique du premier appel (si cela a du sens). Jusqu'à présent, j'ai un extendeur automatique complet qui, au fur et à mesure que je saisis l'adresse, retire la liste des descriptions, ce qui est correct, mais je n'ai aucun moyen de repasser l'identifiant unique (que je ne veux pas montrer à l'utilisateur) . Est-il possible de renvoyer l'identifiant unique dans le service Web sans que l'utilisateur le voie?Extender Auto Complete avec valeur cachée

Répondre

0

Je ne suis pas tout à fait ce que vous entendez ou ce que votre niveau est, donc cela pourrait ne pas être ce que vous cherchez:

Quand vous faites votre (ajax?) Appelez au serveur pour obtenir la liste des descriptions, vous obtiendrez probablement une liste simple des chaînes normales représentant les descriptions possibles. Au lieu d'utiliser des chaînes simples, utiliser quelque chose comme JSON, où vous mettez les deux id et le nom. Vous pouvez remplir votre liste de autocompletes en utilisant quelque chose comme

foreach(var obj in suggestions) 
    addToList(obj.Name); 

avoir une collection avec les suggestions originales quelque part en mémoire (comme la variable 'suggestions'); et quand quelqu'un sélectionne un article autosuggé, vous pouvez trouver l'article 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 choses Ajax. Lors de l'utilisation PageMethods (Google pour def exacte.) Utiliser 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 whereever que vous aimez dans la page.

+0

Actuellement, j'utilise Microsofts intégré dans le contrôle AutoCompleteExtender fourni avec ASP.Net AJAX. J'ai pensé à faire ma propre méthode javascrpt (avec JSON) le seul problème est que j'ai eu des erreurs avec les changements de contrôles sur la page et le viewstate. –

+0

Je pour un usage http://www.pengoworks.com/workshop/jquery/autocomplete.htm pour faire quelque chose comme je l'ai dit dans mon commentaire. C'est beaucoup plus extensible. –

Questions connexes