2012-05-14 1 views
0

Я пытаюсь зарегистрировать простой сценарий -ClientScript.RegisterClientScriptBlock работает только в Pageload случае

ClientScript.RegisterClientScriptBlock(typeof(Page), "myscript", "<script>testfun();</script>"); 

Эта линия работает хорошо, когда я положил его в случае загрузки страницы. Однако каждый раз, когда пользователь выбирает строку в gridview, мне нужна часть клиентской функции для выполнения, поэтому в событии GridView.SelectedIndexChanged я добавил ту же строку, однако она там не работает. Может ли кто-нибудь указать, почему это происходит или направлять меня к более элегантному решению?

+0

Загрузить RegisterStartupScript? Если у вас есть UpdatePanel, окружающий ваш элемент управления. Вы можете использовать ScriptManager.RegisterStartupScript. – madatanic

+0

Почему вы регистрируете скрипт на следующей обратной передаче? Вы должны сделать это при начальной загрузке, тогда вы можете даже опустить обратную передачу в SelectedIndexChanged, если хотите. –

+0

На самом деле, у меня есть 2 раздела на моей странице, оба находятся в отдельной панели обновлений, поэтому вся страница не загружается при изменении SelectedIndex, а именно, когда я хочу, чтобы сценарий запускался. Следовательно, вызов этого в начальной загрузке не будет работать. Я прав? @TimSchmelter – neuDev33

ответ

2

RegisterClientScriptBlock не выполняет ваш скрипт, а только отправляет его на страницу, которая затем отправляется клиенту. Это программный эквивалент файла *.js. Сценарий выполняется только тогда, когда на клиентскую страницу загружается итоговая HTML-страница. Если вы хотите, чтобы некоторые ява скрипт для запуска по событию конкретного элемента управления необходимо подключить метод javascript к нему так:

onclick="javascript_method();" 

Для этой работы вы должны иметь javascript_method() определены в *.js файл или добавить к вашей странице via RegisterClientScriptBlock

Смежные вопросы