2011-03-18 55 views
1

的問題是這樣的 我初始化一個jqGrid的不POSTDATA, 並設置hiddengrid:真實,我怎麼能叫刷新方法

我想在第一個初始化表沒有要求, 然後將手工請求數據,

JS

var showRoleList = function($entityList,pagerId) 
{ 
    $entityList.jqGrid({ 
     url:'servlet/RoleAction', 
     datatype: 'json', 
     height: 'auto', 
     jsonReader: 
     { 
      repeatitems : false, 
      userdata: "rows" 
     }, 
     colNames:['ID','roleName','detail','action'], 
     colModel: 
     [ 
      {name:'id',index:'id',hidden:true}, 
      {name:'name',index:'name', width:100,sortable:false}, 
      {name:'description',index:'description', width:400,sortable:false}, 
      {name:'action',index:'action', width:40,sortable:false} 
     ], 
     rowNum:10, 
     altRows:true, 
     autowidth:true, 
     mtype: "POST", 
     rownumbers: true, 
     rownumWidth: 30, 
     imgpath:'css/images', 
     sortorder:'desc', 
     viewrecords: true, 
     multiselect:true, 
     loadui:'disable' , 
     gridview:true, 
     hiddengrid:true, 
     page:1, 
     pginput:true, 
     pager: pagerId, 
     sortname: 'dateEntered', 
     altclass:'ui-priority-secondary_1', 
    }); 
} 

showRoleList($("#entityList0"),"#pEntityList0"); 
**$entityList0.jqGrid("setGridParam", { 
     postData:{ACTION:'userRelation',userId:user.id,typeName:'role',flag:true}, 
});** 

**$entityList0.trigger("reloadGrid", [{page:1}]);** 

HTML

<table id="entityList0"></table> 
<div id="pEntityList0"></div> 

但未能 我打電話時觸發,請求可以被髮送,但沒有POSTDATA

沒有參數沒有可以發佈到服務器

,但如果我點擊刷新按鈕,它可以工作

我該如何解決這個問題

謝謝你的回答

+0

你能發佈更完整的代碼嗎?最好的信息是哪一個可以用來重現你的問題。一個並不需要任何服務器組件。人們可以看到哪個HTTP請求將被髮送。 – Oleg 2011-03-18 12:59:30

+0

謝謝我添加更多信息 – shahapp 2011-03-18 13:21:31

+0

此代碼應該按原樣工作。 'trigger(「reloadGrid」)'幾乎*完全是Refresh按鈕的功能。其他事情正在發生。 – 2011-03-18 13:33:01

回答

2

我無法重現你的問題。唯一明確的語法錯誤是flag:true},}) muss被替換爲flag:true}})(刪除逗號)。用同樣的方法,您應該將altclass:'ui-priority-secondary_1',}替換爲altclass:'ui-priority-secondary_1'}

$(document).ready(function() {/*here*/});裏面的所有代碼是?

在代碼變量user$entityList0未初始化。你確定,在上面的代碼中使用集合$entityList0=$("#entityList0")並初始化爲user至少爲{}

例如,您還應該刪除已棄用的imgpath參數並將sortname: 'dateEntered'替換爲sortname: 'name'

如果您發佈任何您使用的測試數據,我可以爲您提供網址到您發佈的代碼以及哪些代碼對我無影響。

已更新:好的!現在擁有可以測試的代碼,我可以看到你的問題在哪裏。問題是你試圖在第一個結束之前開始第二個Ajax請求。您的網格有datatype: 'json'。在行showRoleList($entityList0,'#pEntityList0');你開始第一個阿賈克斯請求,然後立即啓動第二個關於$entityList0.trigger("reloadGrid")。第一個請求將內部變量$("#entityList0")[0].grid.hDiv.loading設置爲true,並且您啓動的所有其他請求將被忽略,直到服務器返回超時或響應或錯誤。

也許你不是真的想發送第一個請求,直到你設置了postData參數。所以你應該在jqGrid的初始化時使用datatype: 'local'(在showRoleList函數中)。那麼你應該還設置datatype: 'json'postData

$entityList0.jqGrid(
    "setGridParam", 
    { 
     datatype: 'json', 
     postData: { 
      ACTION:'userRelation', 
      userId:'1111', 
      typeName:'role', 
      flag:true 
     } 
    } 
); 

替代你需要電網的重裝之前中止先前的Ajax調用。如果真的需要我可以解釋你如何實現這一點。

0

好,我只是做一個test.html的

<html ... 
    <script type="text/javascript"> 
    var $entityList0; 
    $(function(){ 

     $entityList0 = $("#entityList0");   
     showRoleList($entityList0,'#pEntityList0');   
     $entityList0.jqGrid("navGrid",'#pEntityList0',{});   
     $entityList0.jqGrid("setGridParam", 
     {  
      postData:{ACTION:'userRelation',userId:'1111',typeName:'role',flag:true} 
     }).showCol("action"); 
     $entityList0.trigger("reloadGrid"); 
     }); 
var showRoleList = function($entityList,pagerId) { 
      $entityList.jqGrid({ 
       url:'servlet/RoleAction', 
       datatype: 'json',  height: 'auto', 
       jsonReader:   { 
        repeatitems : false, 
        userdata: "rows" 
       }, 
       colNames:['ID','roleName','detail','actiokn'], 
       colModel: 
       [ 
        {name:'id',index:'id',hidden:true}, 
        {name:'name',index:'name', width:100,sortable:false}, 
        {name:'description',index:'description', 
     width:400,sortable:false}, 
        {name:'action',index:'action', 
     width:40,sortable:false} 
       ], 
       rowNum:10, 
       altRows:true, 
       autowidth:true, 
       mtype: "POST", 
       rownumbers: true,  rownumWidth: 30, 
       //imgpath:'css/images', 
       sortorder:'desc', 
       viewrecords: true, 
       multiselect:true, 
       loadui:'disable' , 
       gridview:true, 
       hiddengrid:true, 
       page:1, 
       pginput:true, 
       pager: pagerId, 
       sortname: 'dateEntered',  altclass:'ui-priority-secondary_1', 
      }); } </script> 
</head> 
<body> 
      <table id="entityList0"></table> 
      <div id="pEntityList0"></div>   
</body> 
</html> 

當第一次打開URL的test.html

HeadersPostPutHTMLXML 
    application/x-www-form-urlencoded 
    _search false 
    nd 1300458295847 
    page 1 
    rows 10 
    sidx dateEntered 
    sord desc 

_search=false&nd=1300458295847&rows=10&page=1&sidx=dateEntered&sord=desc 

的,然後我點擊刷新按鈕

HeadersPostPutHTML 
application/x-www-form-urlencoded 
ACTION userRelation 
_search false 
flag true 
nd 1300458310960 
page 1 
rows 10 
sidx dateEntered 
sord desc 
typeName role 
userId 1111 

_search=false&nd=1300458310960&rows=10&page=1&sidx=dateEntered&sord=desc&ACTION=userRelation&userId=1111&typeName=role&flag=true 

你可以測試它

你可以看到結果不一樣
這是一個簡單的頁面,你可以輕鬆測試!如果你能找到錯誤的地方,請告訴我,謝謝

+0

是的,奧列格是對的,我現在可以解決這個問題 – shahapp 2011-03-18 15:44:40