Во время PostBack JavaScript теряет свою функциональность - PullRequest
2 голосов
/ 19 июля 2011

У меня есть один GridView, который имеет один CheckBox и три TextBox в столбце шаблона.Логика в том, что когда я проверяю CheckBox, соответствующие TextBoxes должны быть включены.Если я сниму флажок с флажка, соответствующие текстовые поля должны быть отключены.Я написал JavaScript для этой функциональности.

Все работает нормально, но на этой странице у меня тоже есть один DropDownList.Когда я изменяю значение DropDownList, страница получает PostBack, и в то время я терял функциональность JavaScript, т.е. включенные TextBox в GridView отключались.Как решить эту проблему?

Ответы [ 5 ]

4 голосов
/ 19 июля 2011

После каждого поста обратно на панель обновлений вам нужно повторно инициализировать ваш javascript , потому что, как вы понимаете, структура HTML изменилась, и JavaScript запускается на предыдущем, который не существует после обновления панели обновления , Microsoft предоставляет такую ​​возможность следующим образом.

Это строки JavaScript.

<script type="text/javascript"> 
    var prm = Sys.WebForms.PageRequestManager.getInstance();    
    prm.add_initializeRequest(InitializeRequest);
    prm.add_endRequest(EndRequest);

    function InitializeRequest(sender, args) {      
    }

    function EndRequest(sender, args) {
      // here initialize again your javascript
    }
</script>
1 голос
/ 19 июля 2011

Используйте событие RowCreated для ASP Grid, чтобы добавить функцию клиента в флажок, таким образом, функция клиента останется при каждой обратной передаче

0 голосов
/ 19 июля 2011

Вы должны зарегистрировать свой javascript на каждом постбэке для его запуска, используя метод ScriptManager.RegisterStartupScript: вот пример (отредактировано для статьи на английском языке, извините: p).

0 голосов
/ 19 июля 2011

JavaScript работает на DOM.Когда страница получает значения PostBack из ViewState, они записываются в DOM и перезаписывают ваши изменения JavaScript.Вы должны хранить состояние флажков в постоянном режиме, т.е.jQuery data () или скрытое поле и после записи PostBack изменяется обратно на DOM.

0 голосов
/ 19 июля 2011

Используйте автоматическую обратную связь с флажком, чтобы включить отключение текстового поля со стороны кода сервера.Это обновит состояние просмотра и будет сохранено при изменении выбора.Используйте их внутри UpdatePanel для AJAX.Кроме того, вы также можете добавить выпадающий список в панель обновлений, чтобы изменение выбора не влияло на другие элементы страницы.

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