Зарегистрируйте клиентский скрипт с динамически загружаемым элементом управления в Ajax Call - PullRequest
2 голосов
/ 10 сентября 2010

У меня есть страница с пользовательским элементом управления вкладками. Когда вы нажимаете на разные вкладки, он выполняет обратный вызов ajax. Во время этого вызова Ajax код динамически загружает другой элемент управления в зависимости от того, на какой вкладке была нажата кнопка, а затем добавляет его на соответствующую вкладку. Поэтому в основном у меня есть некоторый код, который выполняет оператор switch, использует LoadControl (), а затем добавляет элемент управления.

Проблема, с которой я столкнулся, заключается в том, что ни один из javascript внутри каждого из этих загружаемых элементов управления не регистрируется на странице. Основано на этой теме:

RegisterClientScriptBlock в вызове метода AJAX

Я подумал, что мне просто нужно переключиться с использования Page.ClientScript.RegisterClientScriptBlock на ScriptManager.RegisterClientScriptBlock. Я сделал это, но все еще ничего. Я что-то неправильно понимаю в ScriptManager? Я хочу, чтобы JavaScript был зарегистрирован в в динамически загружаемом элементе управления, который загружается во время вызова AJAX.

Заранее спасибо.

Ответы [ 2 ]

2 голосов
/ 01 сентября 2012

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

<asp:ScriptManager ID="ScriptManager1" EnablePartialRendering="true" runat="server">
    <Scripts>
        <asp:ScriptReference Path="~/Resources/js/registeragain.js" />
    </Scripts>
</asp:ScriptManager>
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
         // AREA 
    </ContentTemplate>
</asp:UpdatePanel>

registeragain.js

Sys.Application.add_init(AppInit);
function AppInit(sender) {
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(End);
}
function End(sender, args) {
    //Aqui se vuelven a llamar los scripts necesarios despues de que carge el Update Panel    
}
0 голосов
/ 14 сентября 2010

У меня была такая же проблема при загрузке веб-элементов управления в UpdatePanel.Проблема в том, что код JavaScript, который динамически загружается на страницу, не анализируется автоматически.

Я решил это на основании информации, приведенной в этой статье

Просто используйте повторноПредоставьте элемент управления InlineScript и оберните его вокруг тегов <script />.Это сделает все остальное за вас.

...