2011-12-27 63 views
0

我做了一个帖子回来得到使用ajax的局部视图以下是我用来呈现部分视图中的div称为'DivSearchGrid'的代码。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

同样的事情发生在我身上。但我解决了这个问题。让我告诉你答案。 – 2011-12-27 11:38:16

回答

0

放入一个用户自定义函数页面加载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(); 

在页面的下方给出现在把脚本:

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

以下脚本会打电话给你的jQuery页面加载方法每次部分回发完成时。

上面我只给出了一些你的功能。你应该把所有必要的功能。

外部链接:http://www.aboutfortunate.com/Technology-Blog.aspx?entid=29

希望这有助于你。

+0

只要你的答案,但这不适用于我我得到一个错误,Sys是未定义的。我没有在这里使用webforms我正在使用MVC3 – Parikshit 2011-12-28 08:11:03

0

检查“/ AuthorityGrid/Search”页面,如果再次在此页面上包含jquery,则会在第二次发生jquery事件时产生问题。总是在主页面中包含jQuery。

+0

“/ AuthorityGrid/Search”不是一个不同的页面我正在使用mvc,这个URl是指在同一视图中的一个动作方法名称搜索 – Parikshit 2011-12-28 08:41:40