2011-12-27 6 views
0

私はajaxを使って部分的なビューを取得するためにポストバックをしています。これは、 'DivSearchGrid'という名前のdivの部分ビューをレンダリングするために使用しているコードです。jqueryはajaxの後に動作しません。asp.net mvc3

<script type ="text/javascript" > 
     $('#Retrieve').click(function() { 
      $('form').get(0).setAttribute('action', 'Search'); 
      //      $('form').submit(); 
      var formSubmit = $('form'); 
      var datTab; 
      $.ajax({ 
       url: "/AuthorityGrid/Search", 
       type: "POST", 
       data: formSubmit.serialize(), 
       success: function (data) { 
        datTab = data; 
       }, 
       complete: function() { 
        $('#DivSearchGrid').html(datTab); 

       } 

      }) 
      return false; 
     }); 
    </script> 

コントローラ内のアクションメソッドは、新しい値のグリッドを返します。私の問題は、ajx呼び出しが完了した後、私のページ内の他のjqueryイベントが機能しなくなることです。いくつかのイベントのコードは次のとおりです。

<script type="text/javascript"> 

     $(function() { 
      //$('th[scope|="col"]').resizable(); 
      $("#resultGrid > tbody").selectable({ 
       selected: function (event, ui) { 
        if (ui.selected.cells != null) { 
         var strAmount = ui.selected.cells(6).innerText; 
         var Amount = strAmount.replace(/,/gi, ""); 
         var keyValue = "AuthorityLevel1=" + ui.selected.cells(11).innerText + ",AuthorityLevel2=" + ui.selected.cells(12).innerText + ",TcmAccount=" + ui.selected.cells(2).innerText + ",TcmType=" + ui.selected.cells(10).innerText + ",Rating=" + ui.selected.cells(5).innerText + ",Amount=" + Amount + ",AuthorityGridKey=" + ui.selected.cells(9).innerText + ",CagName=" + ui.selected.cells(3).innerText 
         var keyValModify = ui.selected.cells(11).innerText + "," + ui.selected.cells(10).innerText + "," + ui.selected.cells(12).innerText + "," + ui.selected.cells(5).innerText + "," + ui.selected.cells(2).innerText + "," + Amount + "," + ui.selected.cells(3).innerText + "," + ui.selected.cells(9).innerText 
         $('#CancelViewParam').val(keyValue); 
         $('#ModifyViewParam').val(keyValModify); 

        } 
       } 
      }); 
     }); 
    </script> 

この関数は、グリッドから行を選択し、選択した値を非表示のフィールドに置きます。

また、ポップアップを開く関数は、この関数のajax call.codeの後には機能しません。

$(function() { 
    $("#DivSearch").dialog({ autoOpen: false, height: "600", width: "600", dialogClass: "myRatingHelp", modal: true }); 
    $('#bRatingHelperDivSearch').live('click',function() { $('#DivSearch').dialog('open'); }); 
    $('#DivSearchRating_bOk').click(function() { 
    $("#InputAuthorityGridSearch_Rating").val($("#hidRating").val()); 
    $("#DivSearch").dialog('close'); 
    }); 
    $('#DivSearchRating_bCancel').click(function() { 
    $("#DivSearch").dialog('close'); 
    }); 
    }); 

これらのすべての機能をAJX呼び出しの前に完璧にうまく動作しますが、すべてのコールの後に動作を停止し、誰かが助けることができますか?

+0

同じことが私に起こりました。私はその問題を解決しました。あなたに答えを見せてください。 –

答えて

0

入れて1つのユーザー定義関数では、ページのロードjQueryの機能ページの末尾に下記のような

function initializeLoad() { 
    $("#DivSearch").dialog({ autoOpen: false, height: "600", width: "600", dialogClass: "myRatingHelp", modal: true }); 
$('#bRatingHelperDivSearch').live('click',function() { $('#DivSearch').dialog('open'); }); 
$('#DivSearchRating_bOk').click(function() { 
$("#InputAuthorityGridSearch_Rating").val($("#hidRating").val()); 
$("#DivSearch").dialog('close'); 
}); 
$('#DivSearchRating_bCancel').click(function() { 
$("#DivSearch").dialog('close'); 
}); 
} 
initializeLoad(); 

今置くスクリプト:あなたのjQueryを呼び出しますスクリプト以下

<script type="text/javascript"> 
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler); 
    function EndRequestHandler(sender, args) { 
     if (args.get_error() == undefined) { 
     initializeLoad(); 
    } 
} 

部分的なポストバックが行われるたびにページロードメソッドを呼び出す。

私はあなたの一部の機能しか与えていません。必要な機能をすべて盛り込んでください。

外部リンク:http://www.aboutfortunate.com/Technology-Blog.aspx?entid=29

・ホープこのヘルプます。

+0

答えはThnkですが、これは私にとってはうまくいかないSysが定義されていないというエラーが表示されます。私はMVC3を使用しています。 – Parikshit

0

"/ AuthorityGrid/Search"ページを確認してください。このページにjqueryを再度追加すると、2回目のjqueryイベント時に問題が発生します。メインページには常にjQueryが含まれています。

+0

"/ AuthorityGrid/Search"は別のページではありません。私はMVCを使用していますが、このURlは同じビュー – Parikshit

関連する問題