Использование LoadControl для пользовательского контроля с JavaScript в нем - PullRequest
1 голос
/ 29 августа 2011

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

Я обнаружил, что мой javascript не выполняется при загрузке элемента управления. Есть ли какое-то волшебство, чтобы заставить выполнение javascript, или это никогда не произойдет, потому что браузер не будет повторно анализировать загруженный html для тегов?

Мой пользовательский элемент управления

<div>hello</div>
<script type="text/javascript" >
alert('hello');
</script>

Страница ascx

<asp:Button OnClick="LoadTheControl" runat="server">Click to Load</asp:Button>
<asp:UpdatePanel ID="myUPanel" runat="server">
    <asp:PlaceHolder ID="WantControlHere" runat="server" />
    <Triggers>
          <asp:AsyncPostBackTrigger ControlID="LoadTheControl" />
    </Triggers>
</asp:UpdatePanel>

Page cs

protected void LoadTheControl(object sender, EventArgs e)
{
    MyControl control = (MyControl)LoadControl("~/MyControl.ascx");
    control.ID = Guid.NewGuid().ToString();
    WantControlHere.Controls.Add(control);
}

Firebug показывает мне весь код моего контроля, но JavaScript не выполняется.

Пожалуйста, укажите на мою глупость.

1 Ответ

2 голосов
/ 29 августа 2011

Я думаю, что для того, чтобы выполнить javascript после загрузки вашего элемента управления, вы должны зарегистрировать его, используя метод ScriptManager.RegisterStartupScript.

Внутри метода Page_Load вашего элемента управления зарегистрируйте скрипт, который вы хотите выполнить.как это:

ScriptManager.RegisterStartupScript(this, this.GetType(), "sub", "alert('me');", true);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...