2015-05-20 4 views
0

Я ненавижу, чтобы задать вопрос, который уже был задан, но ни один из ответов я посмотрел на, кажется, относятся к моей проблемеasp.NET AJAX вызова JQuery больше не работает

Я использую Microsoft UpdatePanel для обновления gridview с помощью AJAX. Если я загружаю gridview при загрузке документа, мой jQuery отлично работает. В первый раз, когда я обновляюсь с помощью AJAX, jQuery больше не работает.

От взгляда на веб-блоги, я получаю, что объект gridview не тот, который существовал при загрузке страницы, и мне нужно повторно познакомить мой jQuery с новым объектом DOM (я думаю ... прав ...?). Большинство сайтов, на которые я смотрел, включая сообщения на этом сайте, указывают, что функция .on() jQuery поможет мне, но я не могу понять, как использовать ее для решения моей проблемы.

Вот пример одного из моих функций JQuery, в случае, если вы заботитесь:

// Select/deselect all checkboxes on gridview 
    $("#chkSelectAll").change(function() { 
     var isChecked = $('#chkSelectAll:checked').val() ? true : false; 
     if (isChecked == true) { 
      $(".c_chkItem input").each(function() { 
       $(this).prop('checked', true) 
      }); 
     } else {  
      $(".c_chkItem input").each(function() { 
       $(this).prop('checked', false) 
      }); 
     } 
    }); 

Мой вопрос, когда объект dot.net обновляет мой GridView, как я могу позволить моему JQuery знать об этом?

+0

Можете ли вы опубликовать всю функцию ajax? – Jacky

ответ

0

Хорошие люди в StackOverflow не могли мне помочь, поэтому я разорвал волосы на несколько часов. Вот мое решение, если кто-то с той же проблемой попадает на эту страницу.

Если у вас есть следующий код JQuery:

<script type="text/javascript"> 

    $(document).ready(function() { 
     $('#myControl').val('some value'); 
    } 

</script> 

Он будет работать при первой загрузке страницы, но если MyControl находится в объекте UpdatePanel, который обновляется с помощью AJAX, ваша функция JQuery не будет работайте с ним больше.

Чтобы решить эту проблему, переместите JQuery в отдельную функцию вне document.ready функции, используя следующий код:

<script type="text/javascript"> 

    $(document).ready(function() { 
     // Whatever 
    } 

    function pageLoad(sender, args) { 
     if (args.get_isPartialLoad()) { 
      $('#myControl').val('some value'); 
     } 
    } 

</script> 

Теперь MyControl ответит на ваш Jquery каждый раз, когда ваша страница частично перезагрузку by ajax.

Еще одна вещь, если у вас есть элемент управления webform, который должен видеть jQuery ПЕРЕД первым вызовом ajax, вам, вероятно, также нужно будет поместить ваш оператор jQuery в функцию document.ready, чтобы он срабатывал как при страницы сначала загружаются и снова после каждого вызова ajax. Мне не нужно это делать, и я не тестировал его, но я предполагаю, что это правильно.

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