ASP.NET UpdatePanel: как заставить клиентский скрипт запускаться при каждом обновлении - PullRequest
1 голос
/ 30 октября 2011

У меня есть самодельный элемент управления панели инструментов, который используется в нескольких местах, как на панели обновления, так и за ее пределами. Он использует JQuery для настройки своих кнопок. В его сборку встроен собственный скрипт запуска.

У меня проблемы с запуском сценария запуска в нужное время, когда панель инструментов находится на панели обновлений. Поскольку он объявлен на скрытой панели в разметке панели обновления, он создается и загружается при создании панели обновления. Но на самом деле он не отображается, пока пользователь не выполнил несколько действий, и скрытая панель не стала видимой.

Я хотел бы, чтобы сценарий запуска запускался каждый раз, когда обновляется панель обновления. (В идеале я хотел бы, чтобы это делалось только в том случае, если панель инструментов видима, но я буду использовать «каждое обновление», если потребуется.) Но я хочу, чтобы панель инструментов продолжала функционировать вне панели обновления, когда все это нужно для этого нужно подключиться к обработчику документа .ready ().

Учитывая, что панель инструментов не может определить (насколько мне известно) со стороны сервера, находится ли она внутри панели обновлений или нет, но отвечает за обеспечение необходимого JavaScript, как я могу сделать это?

Спасибо.

ETA: Я нашел ответ в ответе на этот вопрос . Это работает для моей панели инструментов, находится ли она на панели обновления или за ее пределами. Спасибо всем!

1 Ответ

0 голосов
/ 31 октября 2011

Поправьте меня, если я ошибаюсь, но я думаю, что панель инструментов jQuery в UpdatePanel должна выполняться каждый раз, когда обновляется панель обновления. Поэтому, возможно, на стороне сервера вы можете сказать, является ли это асинхронным обратным вызовом. Если это так, то вы можете написать некоторый javascript на панели обновлений, который будет выполняться. Вы можете использовать literalcontrol, который загружается в заполнитель на панели обновлений. Что-то вроде ...

public void WebForm1_OnLoad(Object sender, EventArgs args){


    if(ScriptManager.GetCurrent(Page).IsInAsyncPostBack){
        var con = new LiteralControl("INSERT javascript here that would call jquery method");
        this.placeHolder.Controls.Add(con);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...