2016-04-27 4 views
0

Я создал элемент управления ASP.Net Server, позвонил на него «WebGrid». Элемент управления WebGrid имеет встроенный ресурс javascript, который он регистрирует с помощью ScriptManager на любой странице.Зарегистрировать ресурс javascript на динамически добавленном серверном элементе управления

protected override void OnInit(EventArgs e) 
    { 
     base.OnInit(e); 

     ClientScriptManager scriptManager = this.Page.ClientScript; 
     scriptManager.RegisterClientScriptResource(typeof(WebGrid), "Atl.Core.Resources.Scripts.WebGrid.js"); 
    } 

Я также уверен, что файл WebGrid.js является внедренный ресурс, изменив свойство сборки действия файла в «Embedded Resource» и добавил ресурс в AssemblyInfo.cs проекта как такового :

[assembly: WebResource("Atl.Core.Resources.Scripts.WebGrid.js", "text/js")] 

Теперь, когда управление объявляется в разметке на странице ASPX Javascript ресурс зарегистрирован в ScriptManager и все работает отлично. НО, если я добавлю элемент управления в ControlCollection страницы динамически с помощью кнопки, щелкните javascript, НЕ регистрируйтесь, а жалоба на управление не может найти такую-то функцию javascript. Обратите внимание, как кнопки и WebGrid расположены в различных UpdatePanels ...

EDIT: Похоже, проблема в том, что я использую ClientScript против ScriptManager см (Differences between ScriptManager and ClientScript when used to execute JS?). Итак, как я могу зарегистрировать скрипт WebGrid с помощью ScriptManager страницы?

ответ

0

Итак, я понял. Ответ довольно прост. В элементе управления обработчиком PreRender просто вызовите статический метод RegisterClientScriptResource в классе ScriptManager. Я был смущен, потому что думал, что мне нужно ссылаться на физический ScriptManager на странице! Неа. Вам все равно нужно установить скрипт как встроенный ресурс и добавить атрибут WebResource в файл Assembly.cs.

protected override void OnPreRender(EventArgs e) 
    { 
     base.OnPreRender(e); 

     ScriptManager.RegisterClientScriptResource(this, typeof(ScriptTest), "Atl.Core.Resources.Scripts.ScriptTest.js"); 
    } 
Смежные вопросы