Функция Javascript не вызывается - ASP.NET и UpdatePanel - PullRequest
0 голосов
/ 08 марта 2009

У меня есть следующая структура в пользовательском контроле, который загружается страницей (Parent UC):

<UpdatePanel>
  <UpdatePanel>
     .. In the codebehind, it loads a Child user control at runtime
  </UpdatePanel>
</UpdatePanel>

В UC OnPageLoad регистрирует скрипт.

ScriptManager.RegisterStartupScript(this, typeof(Page), "Load_" + this.ClientID, base.GetRegisterScript(this.ClientID), true);

Функция JS никогда не выполняется при асинхронных обратных передачах. Если я удаляю UpdatePanels, он работает как положено

РЕДАКТИРОВАТЬ: использовал this.GetType () вместо typeof (Page), но не повезло

РЕДАКТИРОВАТЬ снова:

Мэтт - я пытался заменить typeof (Page) именем UC. Вот обновленная строка:

ScriptManager.RegisterStartupScript(this, typeof(TemplateAreaTypeOne), "Load_" + this.ClientID, "...JS function here,,", true);

Для пояснения, Страница загружает родительский UC, имеющий эти UpdatePanels. Затем ParentUC загружает ChildUC, и ScriptManager.RegisterStartuScript используется в ChildUC

EDIT

Разметка имеет:

<script type="text/javascript">
//<![CDATA[
; findControl('PageLoadedHiddenTxtBox').value ='Set';OnLoadBegin('ctl00_WorkSpaceContent_ctlUnion1_ctlUnion1Child','Edit');OnLoadEnd('ctl00_WorkSpaceContent_ctlUnion1_ctlUnion1Child','Edit');
document.getElementById('ctl00_WorkSpaceContent_informationSummary').dispose = function() {
    Array.remove(Page_ValidationSummaries, document.getElementById('ctl00_WorkSpaceContent_informationSummary'));
}
//]]>
</script>

Обратите внимание, что вызываемыми функциями являются OnLoadBegin и OnLoadEnd, которые были добавлены в HTML

ИЗМЕНИТЬ СНОВА

Получил работу, используя:

ScriptManager.RegisterStartupScript(this.Page, typeof(Page),....)

Не уверен, почему это работает, когда я использую ссылку на страницу.

  1. Будет ли это работать, если на странице будет несколько элементов управления?
  2. Почему это работает, когда я использую ссылку на страницу?

1 Ответ

2 голосов
/ 08 марта 2009

ваш registerstartupscript должен быть нацелен на элемент управления, НЕ на странице не используется typeof (Page)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...