2008-09-18 4 views
3

Si je veux injecter une variable tableau scope globalement dans le code JavaScript côté client d'une page au cours d'une postback pleine page, je peux utiliser:La manière la plus simple de mettre à jour une variable tableau javascript côté client lors d'une publication ASP.NET AJAX dans un UpdatePanel?

this.Page.ClientScript.RegisterArrayDeclaration("WorkCalendar", "\"" + date.ToShortDateString() + "\""); 

à Accroche et remplir un tableau JavaScript côté client sur la page. Nice et simple.

Mais je veux faire la même chose à partir d'une publication asynchrone à partir d'un UpdatePanel. Le plus proche que je peux comprendre jusqu'ici est de créer un fichier .js qui contient juste la déclaration var, mettre à jour le fichier pendant la publication asynchrone, puis utiliser un ScriptManagerProxy.Scripts.Add pour ajouter le fichier .js à la portée globale de la page.

Y a-t-il quelque chose de plus simple? Est-ce que c'est faux?

Répondre

0

Vous pourriez également mettre à jour une étiquette cachée dans le panneau de mise à jour qui vous permet d'écrire n'importe quel javascript que vous aimez. Je suggère cependant d'utiliser des services Web ou même des méthodes de page pour récupérer les données dont vous avez besoin au lieu d'utiliser des panneaux de mise à jour.

Exemple: myLabel.Text = "...."; ... mettez votre logique dans ceci ou vous pouvez ajouter [WebMethod] à n'importe quelle méthode de page statique publique et renvoyer des données directement.

+0

Fermez avec l'étiquette, mais utilisez un littéral plutôt qu'une étiquette. –

+0

Ceci est une meilleure solution, me forçant à aller du côté client avec le tableau, l'événement et le contrôle, au lieu de créer une chaîne spaghetti de serveur à client à serveur à client à serveur. Merci. – Noel

3

Utilisez la méthode statique System.Web.UI.ScriptManager.AddStartupScript()

Le script sera exécuté sur tous postbacks complets et partiels.

+0

Merci pour le pointeur. C'est en effet une meilleure option que ce que j'ai énuméré, mais ce n'était pas la vraie réponse, car il m'a toujours fallu créer et enregistrer un bloc javascript chaque fois que je devais mettre à jour le tableau. – Noel

2

Sam est correct. ScriptManager.RegisterStartupScript est le nom correct de la fonction. Il fonctionnera sur toutes les mises à jour de pages complètes et partielles.

Questions connexes