2010-08-09 172 views
2

我遇到了Jqgrid的問題,我在單個頁面上有兩個網格,並且onclick第一個網格的一行需要重新加載第二個網格。JqGrid刷新不工作

我100%確定第二個網格配置正確,如果我手動傳遞一個硬編碼的ID它填充正確。

只是重新加載功能不起作用。請有人協助。下面是jQuery代碼爲兩個網格

$(document).ready(function() {  
    jQuery("#list2").jqGrid({ 
     url:'classes/ListServices.php', 
     datatype: "json", 
     mtype: 'POST', 
     colNames: ['Id','Description', 'Details', 'Cost in (R)'], 
     colModel: [ 
      {name:'Id',index:'Id', align:"center", width:30}, 
      {name:'Description',index:'Description', align:"center"}, 
      {name:'Details',index:'Details', align:"left"}, 
      {name:'Cost',index:'Cost',align:"center",width:30,formatter:'currency'}, 
     ], 
     width: 780, 
     height: 100, 
     rowNum:18, 
     pager: '#pager1', 
     loadonce: true, 
     sortname: 'id', 
     viewrecords: true, 
     sortorder: "asc", 
     caption:"Services List", 
     multiselect: false, 
     onSelectRow: function(ids) { 
      if(ids == null) { 
       ids=0; 
       if(jQuery("#list3").jqGrid('getGridParam','records') >0) { 
        jQuery("#list3").jqGrid('setGridParam', 
              {url:"subgrid.php?q=1&id="+ids,page:1}); 
        jQuery("#list3").jqGrid.trigger('reloadGrid'); 
       } 
      } 
      else { 
       jQuery("#list3").jqGrid('setGridParam', 
             {url:"subgrid.php?q=1&id="+ids,page:1}); 
       jQuery("#list3").jqGrid.trigger('reloadGrid'); 
      }  
     } 
    }); 

    jQuery("#list2").jqGrid('navGrid','#pager2', 
          {edit:false,add:false,del:false,multipleSearch:true}); 
    jQuery("#list2").jqGrid('filterToolbar', 
          {stringResult: true,searchOnEnter : false}); 

    jQuery("#list3").jqGrid({ 
     url:'classes/ListServicesDetails.php?Id=2', 
     datatype: "json", 
     mtype: 'POST', 
     colNames: ['Id','ServiceId', 'Description', 'Details', 'Cost in (R)'], 
     colModel: [ 
      {name:'Id',index:'Id', align:"center", width:30}, 
      {name:'ServiceId',index:'ServiceId', align:"center", width:30}, 
      {name:'Description',index:'Description', align:"center"}, 
      {name:'Details',index:'Details', align:"left"}, 
      {name:'Cost',index:'Cost',align:"center",width:30,formatter:'currency'}, 
     ], 
     width: 780, 
     height: 200, 
     rowNum:18, 
     pager: '#pager2', 
     loadonce: true, 
     sortname: 'id', 
     viewrecords: true, 
     sortorder: "asc", 
     caption:"Services Details List", 
     multiselect: false, 
     onSelectRow: function(id) { 
      alert(id); 
     } 
    }); 
    jQuery("#list3").jqGrid('navGrid','#pager2', 
          {edit:false,add:false,del:false,multipleSearch:true}); 
}); 

請,如果有人可以幫助我......

感謝

回答

14

兩個jqGrids有參數loadonce: true。這意味着在第一次加載後,網格的datatype將從"json"更改爲"local"。要重新加載第二個網格,您應該將datatype參數重置爲"json"以及urlpage參數。

+0

你好奧列格, 感謝百萬 - 作品100%。 如果我以前沒有說過 - 這個論壇岩石! 謝謝 – user330306 2010-08-09 17:12:17

+0

這工作對我來說,我也沒有需要設置url或頁面參數,謝謝! – Will 2010-11-04 23:18:01

+2

@會:歡迎你! 'jqGrid.trigger('reloadGrid')'之前的url設置是特定於該問題的,但在大多數情況下建議使用'page:1'的設置。原因如下。讓我們用戶在數據刷新之前選擇頁碼5,重新加載後頁面的總數將爲4.如果不重置'頁面',用戶可以在刷新後看到空白頁面5,並且不會理解這個。爲了避免這個問題,你可以在'reloadGrid'前面設置'page:1'。另見http://stackoverflow.com/questions/3807623/jqgrid-paging-question/3808014#3808014 – Oleg 2010-11-05 07:23:44