Панель частичной обратной передачи AJAX ломает мои кнопки? - PullRequest
0 голосов
/ 02 апреля 2019

Итак, я гонялся за этим в течение нескольких дней, и мне кажется, что я неправильно диагностировал проблему. У меня есть страница ASPX с несколькими кнопками и заполнителями, видимость которых изменяется в зависимости от запросов. Все отлично работает Но затем я добавил текстовое поле с датой и временем с сервера внутри панели asp. Содержимое панели отлично работает, и я попробовал несколько сценариев.

Независимо от того, как я это делаю, я обнаружил, что мои кнопки, которые находятся за пределами этой панели, не работают ... Я вообще не получаю событие нажатия. Я пришел к выводу, что частичный постбэк разрывает соединения с моими нажатиями кнопок. Это звучит как правильное объяснение и что я могу с этим поделать?

Изменить, чтобы добавить, вот что я попробовал после вашего предложения:

 <script type="text/javascript">
   $(document).ready(function () {
       bindMyButtons();
   });

   var prm = Sys.WebForms.PageRequestManager.getInstance();

   prm.add_endRequest(function () {
       bindMyButtons();
   });

   function bindMyButtons() {
       $('CloseNoticeButton').click(function () {
           'CloseNoticeButton_Click()'
       });

       $('#InBtn').click(function () {
           'InBtn_Click'
       });
       $('#OutBtn').click(function () {
           'OutBtn_Click'
       });
       $('.MyClass').each(function () {
           //do stuff to the MyClass class
       });
   }

РЕШИТЬ! Предложение запустить его в F12 дало мне ответ! Я должен был добавить: EnableEventValidation = "false" на моей странице. Не совсем уверен, почему, но ... это похоже на работу.

Ответы [ 2 ]

1 голос
/ 02 апреля 2019

Вам необходимо перепривязать слушателей, так как DOM изменяется из-за частичного PostBack. Поэтому убедитесь, что вы повторно связали элементы управления после частичного постбэка.

<script type="text/javascript">
    $(document).ready(function () {
        bindMyButtons();
    });

    var prm = Sys.WebForms.PageRequestManager.getInstance();

    prm.add_endRequest(function () {
        bindMyButtons();
    });

    function bindMyButtons() {
        $('#myButton').click(function () {
             //hanldle button click
        });

        $('.MyClass').each(function () {
            //do stuff to the MyClass class
        });
    }
</script>
0 голосов
/ 04 апреля 2019

Запуск его в F12 дал мне ответ ... большое спасибо @VDWWD! Мне пришлось добавить "EnableEventValidation =" false "на страницу май. Не уверен, почему, но это решило проблему ... стук по дереву!

...