Как загрузить функцию JavaScript из добавленного элемента управления dynamicical? - PullRequest
0 голосов
/ 02 сентября 2011

Мастер-страница получила ScriptManager.

Затем я получил элемент управления с ScriptManagerProxy и UpdatePanel.

Внутри UpdatePanel я динамически добавляю элемент управления (также содержащий ScriptManagerProxy) ииз этого элемента управления мне нужно запустить некоторый код JavaScript.

DynamicControl.ascx:

<script type="text/javascript">
    function doSomething() {
        alert(1);
    }
</script>

DynamicControl.ascx.cs:

public void Page_Load(object sender, EventArgs e)
{
...
ScriptManager.RegisterStartupScript(
this.Page, this.GetType(), "scriptID",
"<script type='text/javascript'>doSomething();</script>", false);

Моя проблемаявляется то, что функция "doSomething ()" никогда не вызывается, и я не знаю почему.: S Редактировать: он вызывается, но не напрямую, когда я добавляю элемент управления.

Если я сделаю код, подобный этому, появится окно предупреждения:

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

Хорошо, я думаю, что мне нужно добавить больше информации:

Элемент управления динамически добавляется в диалоге jQuery.И я узнал, что javacode сначала выполняется после того, как я закрываю, а затем открываю диалог.Я думаю, что происходит какое-то событие, так что там выполняется код.Можно ли форсировать это событие?поэтому сценарии выполняются непосредственно при добавлении элемента управления?

placeHolder.Controls.Add(dynamicReportControl);

Этот код на c # не выполняет тег javascript немедленно?

Ответы [ 2 ]

1 голос
/ 02 сентября 2011

Пожалуйста, попробуйте что-то вроде этого

ScriptManager.RegisterStartupScript(
this.UpdatePanel1, this.UpdatePanel1.GetType(), "scriptID",
"<script type='text/javascript'>doSomething();</script>", false);

Где UpdatePanel1 - ваша UpdatePanel

0 голосов
/ 02 сентября 2011

Попробуйте установить для аргумента addScriptTags значение true и удалите объявление сценария из своего кода.

Этот код должен выполняться только при каждом запросе?Если так, то почему бы просто не добавить этот код в ASCX:

window.onload = doSomething();
...