Самый простой способ обновить переменную массива JavaScript на стороне клиента во время обратной передачи ASP.NET AJAX в UpdatePanel? - PullRequest
3 голосов
/ 18 сентября 2008

Если я хочу вставить переменную массива глобальной области видимости в клиентский JavaScript-код страницы во время полной обратной передачи страницы, я могу использовать:

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

для объявления и заполнения клиентского массива javascript на странице. Красиво и просто.

Но я хочу сделать то же самое из асинхронной обратной передачи от UpdatePanel.

Самое близкое, что я могу пока понять, - это создать файл .js, который просто содержит объявление var, обновить файл во время асинхронной обратной передачи, а затем использовать ScriptManagerProxy.Scripts.Add, чтобы добавить файл .js в глобальную область страницы ,

Есть что-нибудь попроще? не так ли?

Ответы [ 3 ]

3 голосов
/ 19 сентября 2008

Используйте статический метод System.Web.UI.ScriptManager.AddStartupScript ()

Скрипт будет работать на всех полных и частичных обратных передачах.

2 голосов
/ 26 апреля 2010

Сэм прав. ScriptManager.RegisterStartupScript - правильное имя функции. Он будет работать при всех полных и частичных обновлениях страницы.

0 голосов
/ 18 сентября 2008

Вы также можете обновить скрытую метку внутри панели обновлений, которая позволит вам написать любой javascript, который вам нравится. Я бы предложил использовать веб-сервисы или даже методы страниц для получения нужных вам данных вместо использования панелей обновления.

Пример: myLabel.Text = "...."; ... вставьте свою логику в это или вы можете добавить [WebMethod] к любому общедоступному статическому методу страницы и возвращать данные напрямую.

...