После асинхронного приема-передачи все скрипты запуска не будут запускаться, поэтому, вероятно, он не работает после обратного вызова AJAX. Палитра цветов, вероятно, имеет функции, которые необходимо выполнить при загрузке страницы.
Я сталкивался с этим так много раз, что написал небольшой метод для регистрации своих сценариев в выделенном фрагменте кода, который обрабатывает как асинхронные, так и неасинхронные циклы. Вот основная схема:
private void RegisterClientStartupScript(string scriptKey, string scriptText)
{
ScriptManager sManager = ScriptManager.GetCurrent(this.Page);
if (sManager != null && sManager.IsInAsyncPostBack)
{
//if a MS AJAX request, use the Scriptmanager class
ScriptManager.RegisterStartupScript(this.Page, this.Page.GetType(), scriptKey, scriptText, true);
}
else
{
//if a standard postback, use the standard ClientScript method
scriptText = string.Concat("Sys.Application.add_load(function(){", scriptText, "});");
this.Page.ClientScript.RegisterStartupScript(this.Page.GetType(), scriptKey, scriptText, true);
}
}
Я запекла все вышеперечисленное в базовый класс страниц, чтобы любая страница, с которой я работаю, могла вызывать this.RegisterClientStartupScript(...)
. Для этого просто создайте базовый класс страницы и включите его туда (убедитесь, что помечены как защищенные, а не как частные, или ваши наследующие классы страниц не смогут получить к нему доступ).
С помощью приведенного выше кода я могу уверенно регистрировать клиентские сценарии независимо от того, выполняет ли страница обратный или обратный вызов. Понимая, что вы используете внешние файлы сценариев, вы, вероятно, могли бы изменить вышеуказанный метод для регистрации внешних сценариев, а не встроенных. Обратитесь к ScriptManager классу для получения более подробной информации, так как есть несколько методов регистрации скриптов ...