2010-08-03 6 views
0

Je crée un composant WebPart dans MOSS 2007 qui contient un composant de saisie semi-automatique.Ajax dans le composant WebPart MOSS 2007

Je ajax-permis à mon site en ajoutant toutes les configs dans web.config (exemple here)

Mon service Web:

[System.Web.Script.Services.ScriptService] 
    public class AutoComplete : System.Web.Services.WebService 
    { 
     [System.Web.Services.WebMethod] 
     [System.Web.Script.Services.ScriptMethod] 
     public string[] GetCompletionList(string prefixText, int count) 
     { 
        List<string> results = new List<string>(); 
        results.Add("Here"); 
        results.Add("Here"); 
        results.Add("Here"); 
        results.Add("Here"); 
        results.Add("Here"); 
        results.Add("Here"); 
        results.Add("Here"); 
        return results.ToArray(); 
     } 
    } 

Je suis en mesure de frapper le service Web depuis le navigateur web . Toutefois, l'autocompleteextender n'appelle pas mon service Web.

Mon adresse de service Web: http://[myserver]/AutoComplete.asmx (J'ai utilisé ceci pour le ServicePath du répéteur). Ma page Web:

J'ai également essayé d'ajouter un calendarextender sur la page et le calendrier s'affiche sous la zone de texte et s'affiche en tant que html en ligne. Bizarre.

Une pensée serait utile.

Merci

Répondre

0

De vous URL du service web, il semble que vous avez mis le service Web dans le dossier racine de votre site. Cela ne fonctionnera pas car ce dossier est géré par SharePoint VirtualPathProvider qui recherche les fichiers dans la base de données de contenu.

Vous devriez mettre votre service Web dans un sous-répertoire ou soit 12Hive \ ISAPI ou 12Hive \ LAYOUTS puis l'appeler à travers le

http://[myserver]/_vti_bin/[Folder]/AutoComplete.asmx 

ou

http://[myserver]/_layouts/[Folder]/AutoComplete.asmx 
+0

Je l'ai également essayé dans le dossier _layouts, mais il n'appelle toujours pas mon service Web. – madatanic

+0

Avez-vous essayé simplement de naviguer vers http: // [myserver]/_layouts/[Folder] /AutoComplete.asmx? Si cela fonctionne essayez d'utiliser Fiddler (www.fiddler2.com) pour voir ce qui se passe. Si une seule requête vous parvient alors vous devriez chercher "SharePoint Panel Fix" –

+0

J'ai été capable de parcourir mon service web dans le dossier _layouts. J'ai également le correctif UpdatePanel à l'intérieur de mon site Web. Il semble qu'il existe une fonctionnalité SharePoint qui remplace l'Ajax. Je ne suis pas sûr de quoi. – madatanic

0
correspondant

Je ne comprends pas pourquoi vous avez besoin d'un service web si vous utilisez AJAX? vous pouvez simplement mettre le code à l'intérieur de votre partie Web (ou tout ce que vous construisez) et faire une publication dans un panneau de mise à jour pour récupérer les valeurs. Beaucoup plus facile à implémenter/installer/déboguer/supporter.

Bien sûr, la réponse précédente est correcte en ce qui concerne l'emplacement du service Web. Je peux juste ajouter que l'emplacement habituel serait _vti_bin et non pas les mises en page où vous mettez habituellement vos pages ASPX personnalisées, mais bien sûr les deux techniques fonctionneraient. S'il vous plaît gardez à l'esprit que vous devez également ajouter un gestionnaire de script à la page, en utilisant le code ou le marquage de la page maître, sinon cela ne fonctionnerait pas, que vous ajoutiez ou non le web.config

+0

J'ai scriptmanager sur la page, y ajoute même une référence de service. – madatanic

+0

Envisagez de ne pas utiliser le service Web. Pouvez-vous confirmer que le code côté serveur s'exécute sur AJAX? –

+0

Je ne suis pas sûr du code côté serveur dont vous parlez.Toutefois, pour expliquer la raison pour laquelle j'ai utilisé le service Web, l'autocompleteextender récupère les suggestions en utilisant une méthode de page ou un service Web. Il n'y a pas moyen, à ma connaissance, de créer une méthode de page statique dans un composant WebPart. Le service Web est la solution qui reste. Si par le code côté serveur vous vouliez dire l'ajout de ce prolongateur aux contrôles de la partie Web, alors oui, il s'est exécuté et a ajouté l'extension à la page. – madatanic

Questions connexes