2010-08-05 52 views
1

我正在使用jQuery Grid插件和本地數據。如果我刪除選定的行,則該行消失。然後,當我進入下一頁並再次返回時,刪除的行又回來了! 如何永久刪除該行或發生了什麼問題? 這裏是代碼:刪除jqGrid行數據的問題 - 客戶端 -

jQuery(document).ready(function(){ 
     // jQuery main function 
     $("#Dialog").dialog({autoOpen:false, show:'slide', hide:'explode', resizable:false, modal:true, buttons:{"OK":function(){ $(this).dialog("close"); }}}); 
     $("#DelResGrid").dialog({autoOpen:false, show:'slide', hide:'explode', resizable:false, modal:true, buttons: { 
      "Abbrechen": function() { 
       $(this).dialog("close"); 
      }, "Alles löschen!": function() { 
       // Clear grid content -> execution <- 
       $("#ResultGrid").clearGridData(true); 
       RefreshMap(); 
       $(this).dialog('close'); 
      } 
     }}); 
     $("#Delete").dialog({autoOpen:false, show:'slide', hide:'explode', resizable:false, modal:true, width:425, buttons: { 
      "Abbrechen": function() { 
       $(this).dialog("close"); 
      }, "Gewählte Löschen":function() { 
       // Delete selected Rows 
       var ID = $("#ResultGrid").getGridParam('selrow'); 
       if(ID == null || ID == undefined) { 
        // No address selected 
        $("#Dialog").html("<p><span class=\"ui-icon ui-icon-info\" style=\"float:left; margin:0 7px 20px 0;\"></span>Bitte eine Adresse ausw&auml;hlen!</p>"); 
        $("#Dialog").dialog("option", "title", "Hinweis:"); 
        $("#Dialog").dialog("open"); 
       } else { 
        $("#ResultGrid").delRowData(ID); 
     /****************************** Here is a change ******************************/ 
        $("#ResultGrid")[0].refreshIndex(); 
     /****************************** Here is a change ******************************/ 
        $("#ResultGrid").trigger("reloadGrid"); 
       } 
       if($("#ResultGrid").jqGrid('getGridParam','records') < 1) { 
        RefreshMap(); 
       } 
       $(this).dialog("close"); 
      }, "Alles löschen": function() { 
       // Clear grid content -> dialog <- 
       $(this).dialog("close"); 
       $("#DelResGrid").dialog("open"); 
      } 
     }}); 
     $("#ResultGrid") 
     .jqGrid({ 
      // Definitions for result grid 
     /****************************** Here is a change ******************************/ 
      colNames:['#', 'Firma', 'Adresse', 'Postleitzahl', 'Ort', 'Telefonnummer'], 
     /****************************** Here is a change ******************************/ 
      colModel:[ 
      {name:'ID', index:'ID', width:40, searchable:false, sorttype:'int', align:'center'}, 
      {name:'Firma', index:'Firma', width:200, searchable:false}, 
      {name:'Adresse', index:'Adresse', width:160, searchable:false}, 
      {name:'Postleitzahl', index:'Postleitzahl', width:100, searchable:false, sorttype:'int'}, 
      {name:'Ort', index:'Ort', width:150, searchable:false}, 
      {name:'Telefonnummer', index:'Telefonnummer', width:160, searchable:false} 
      ], 
      datatype: "clientSide", 
      height: 'auto', 
      loadonce: true, 
      pager: '#ResultPager', 
      rownum: -1, 
     }) 
     .navGrid('#ResultPager', {view:false, edit:false, add:false, del:false, search:false, refresh:false}) 
     .navButtonAdd('#ResultPager', {title:"Adresse ins Addressbuch übernehmen", buttonicon:"ui-icon-disk", caption:"Speichern", onClickButton:function(){ 
      // Save selected address to database 
      var ID = $("#ResultGrid").getGridParam('selrow'); 
      if(ID == null || ID == undefined) { 
       $("#Dialog").html("<p><span class=\"ui-icon ui-icon-info\" style=\"float:left; margin:0 7px 20px 0;\"></span>Bitte eine Adresse ausw&auml;hlen!</p>"); 
       $("#Dialog").dialog("option", "title", "Hinweis:"); 
       $("#Dialog").dialog("open"); 
      } else { 
       var AddressRow = $("#ResultGrid").getRowData(ID);      
       if(AddressRow.Telefonnummer == "" || AddressRow.Telefonnummer == undefined) { 
        $("#Dialog").html("<p><span class=\"ui-icon ui-icon-info\" style=\"float:left; margin:0 7px 20px 0;\"></span>Adresse kann nicht &uuml;bernommen werden, da sie keine Telefonnummer enth&auml;lt</p>"); 
        $("#Dialog").dialog("option", "title", "Hinweis:"); 
        $("#Dialog").dialog("open"); 
       } else { 
        $.ajax({ 
         type: 'POST', 
         url: 'Edit.php', 
         data: {oper:'ManAdd', Name:AddressRow.Firma, Address:AddressRow.Adresse, PLZ:AddressRow.Postleitzahl, Ort:AddressRow.Ort, TelNr:AddressRow.Telefonnummer} 
        });   
        $("#MyGrid").trigger("reloadGrid"); 
       } 
      } 
     }}) 
     .navButtonAdd('#ResultPager', {title:"Löschen", buttonicon:"ui-icon-trash", caption:"Löschen...", onClickButton:function(){ 
      $("#Delete").dialog("open"); 
     }}); 
    }); 

感謝您的回答!

回答

2

刷新本地索引可能是已知的問題(請參閱jqgrid reload grid partially working)。嘗試撥打

$("#ResultGrid")[0].refreshIndex(); 

修改jqGrid數據後。你不會發布完整的代碼,所以你應該自己測試這個建議。

+0

感謝您的幫助!我剛剛爲ID和refreshIndex()方法添加了一列,所以現在它工作正常! 此外我添加了.trigger(「reloadGrid」);刷新網格的內容,但我不知道它是否真的有必要... – Laurenz 2010-08-06 08:36:47

+0

歡迎您!在我看來,'trigger(「reloadGrid」)'colling不是必需的,但我知道你的程序不太好。所以我不確定。你可以做一些額外的實驗。 – Oleg 2010-08-06 08:46:42