2010-04-16 73 views
0

我有一個jqGrid的使用時的XMLReader與由RoR的服務吐出來的數據來填充自己的網頁。該頁面加載罰款Firefox和Safari瀏覽器。在Chrome中,我得到一個空白的網格。只有當我通過點擊列來更改排序順序時,它纔會填充。爲什麼不會jqGrid的最初填充在Chrome

<html> 
<head> 
    <title>LocalFx</title> 
    <link href="/stylesheets/main.css?1271423251" media="screen" rel="stylesheet" type="text/css" /> 


    <link href="/stylesheets/redmond/jquery-ui-1.8.custom.css?1271404544" media="screen" rel="stylesheet" type="text/css" /> 
    <link href="/stylesheets/ui.jqgrid.css?1265561560" media="screen" rel="stylesheet" type="text/css" /> 
    <script src="/javascripts/jquery-1.3.2.min.js?1259426008" type="text/javascript"></script> 
    <script src="/javascripts/i18n/grid.locale-en.js?1266140090" type="text/javascript"></script> 
    <script src="/javascripts/jquery.jqGrid.min.js?1271437772" type="text/javascript"></script> 



    <script type="text/javascript"> 

     jQuery().ready(function() { 
      jQuery("#list").jqGrid({ 
       xmlReader: { 
        root:"contracts", 
        row:"contract", 
        repeatitems:false, 
        id:"id" 
       }, 
       jsonReader: { 
        repeatitems:false, 
        root:"contracts" 
       }, 
       datatype: 'xml', 
       url:'http://localhost:3000/contracts/index/all.xml', 
       mtype: 'GET', 
       colNames:['User','B/S', 'Currency', 'Amount', 'Rate'], 
       colModel :[ 
        {name:'user', index:'username', width:100 , xmlmap:'user>username'} , 
        {name:'side', index:'side', width:100 , xmlmap:'side'} , 
        {name:'currency', index:'ccy', width:100 , xmlmap:'currency>ccy'} , 
        {name:'amount', index:'amount', width:100 , xmlmap:'amount'}, 
        {name:'rate', index:'rate', width:100 , xmlmap:'exchange-rate>rate'} 
       ], 
       pager: jQuery('#pager'), 
       caption: 'Contracts', 
       sortname: 'side', 
       sortorder: "asc", 
       viewrecords:true, 

       rowNum:10, 
       rowList:[10,20,30] 
      }); 
      $("#list").trigger("reloadGrid") 
     }); 
    </script> 


</head> 
<body> 

<table id="list" align="center" class="scroll"></table> 
<div id="pager" class="scroll" style="text-align:center;"></div> 

</body> 
</html> 

這是XML:

<contracts type="array"> 
    <contract> 
    <amount type="float">1000.0</amount> 
    <created-at type="datetime">2010-04-16T13:59:40Z</created-at> 
    <currency-id type="integer">488525179</currency-id> 
    <id type="integer">18277852</id> 
    <side>BUY</side> 
    <updated-at type="datetime">2010-04-16T13:59:40Z</updated-at> 
    <user-id type="integer">830138774</user-id> 
    <exchange-rate> 
     <contract-id type="integer">18277852</contract-id> 
     <created-at type="datetime">2010-04-16T13:59:40Z</created-at> 
     <denccy-id type="integer">890731696</denccy-id> 
     <id type="integer">419011264</id> 
     <numccy-id type="integer">488525179</numccy-id> 
     <rate type="float">1.3</rate> 
     <updated-at type="datetime">2010-04-16T13:59:40Z</updated-at> 
    </exchange-rate> 
    <user> 
     <created-at type="datetime">2010-04-16T13:59:40Z</created-at> 
     <id type="integer">830138774</id> 
     <updated-at type="datetime">2010-04-16T13:59:40Z</updated-at> 
     <username>John Doe</username> 
    </user> 
    <currency> 
     <ccy>EUR</ccy> 
     <created-at type="datetime">2010-04-16T13:59:40Z</created-at> 
     <id type="integer">488525179</id> 
     <updated-at type="datetime">2010-04-16T13:59:40Z</updated-at> 
    </currency> 
    </contract> 
    <contract> 
    <amount type="float">500.0</amount> 
    <created-at type="datetime">2010-04-16T13:59:40Z</created-at> 
    <currency-id type="integer">890731696</currency-id> 
    <id type="integer">716237132</id> 
    <side>SELL</side> 
    <updated-at type="datetime">2010-04-16T13:59:40Z</updated-at> 
    <user-id type="integer">830138774</user-id> 
    <exchange-rate> 
     <contract-id type="integer">716237132</contract-id> 
     <created-at type="datetime">2010-04-16T13:59:40Z</created-at> 
     <denccy-id type="integer">890731696</denccy-id> 
     <id type="integer">861902380</id> 
     <numccy-id type="integer">488525179</numccy-id> 
     <rate type="float">1.3</rate> 
     <updated-at type="datetime">2010-04-16T13:59:40Z</updated-at> 
    </exchange-rate> 
    <user> 
     <created-at type="datetime">2010-04-16T13:59:40Z</created-at> 
     <id type="integer">830138774</id> 
     <updated-at type="datetime">2010-04-16T13:59:40Z</updated-at> 
     <username>John Doe</username> 
    </user> 
    <currency> 
     <ccy>GBP</ccy> 
     <created-at type="datetime">2010-04-16T13:59:40Z</created-at> 
     <id type="integer">890731696</id> 
     <updated-at type="datetime">2010-04-16T13:59:40Z</updated-at> 
    </currency> 
    </contract> 
</contracts> 
+0

打開檢查,確認是否有JavaScript錯誤,是由Ajax請求,他們怎麼回... – queen3 2010-04-17 13:47:56

+0

嗨,沒有JavaScript錯誤,我查了。 – Maxm007 2010-04-18 11:34:19

回答

0

調用$("#list").trigger("reloadGrid")而不是網格對象初始化後,嘗試從loadComplete,數據從URL加載後調用它稱之爲:

jQuery("#list").jqGrid({ 
    ... 
    rowList:[10,20,30], 
    loadComplete: function(){ 
     ("#list").trigger("reloadGrid") 
    } 
}); 
2

對不起,但您如何驗證http://www.ok-soft-gmbh.com/jqGrid/XmlTest/xmlorg.htm您的原始代碼在Chrome(「4.1.249.1045(42898)」或「5.0.342.9 beta」)中正常工作。我不包含main.css,因爲你沒有發佈它。

我可以說,該行

$("#list").trigger("reloadGrid") 

(不通過的方式分號)可以被刪除。和jqGrid的表格和網頁DIV可以減少到

<table id="list"></table> 
<div id="pager"></div> 

(見http://www.ok-soft-gmbh.com/jqGrid/XmlTest/xml.htm),但所有幫你不是真的。我的建議是:

  • 使用當前版本的jqGrid的(3.6.4)
  • 驗證你檢查,你需要在下載從http://www.trirand.com/blog/?page_id=6最小的jqGrid的所有版本的jqGrid部分。如果你不確定 - 全部檢查。或者使用GitHub的最後一個版本(特別是如果您使用jQuery 1.4.x),如果jqGrid的未壓縮版本對您來說可以。

我想,你的錯誤是因爲使用錯誤的最小化版本的jqGrid(沒有你真正需要的某些部分)。另一個不太可能的錯誤是你的main.css文件。

問候

+0

對不起,該reloadGrid行被添加到試圖強制它。忘了刪除它。 main.css文件不包含任何內容。 – Maxm007 2010-04-18 11:37:43

+0

我想我在下載最低版本時檢查了所有內容。當我解壓時,我有3個文件夾。 CSS,JS和SRC。我使用jquery 1.3.2,jqgrid 3.6.4包含.min腳本的CSS和JS文件夾的文件。我沒有對/ SRC文件夾做任何事情。 – Maxm007 2010-04-18 11:43:43

+0

您發佈的URL中的kqgrid在Chrome中加載正常 – Maxm007 2010-04-18 11:52:46

0

,因爲我的評論我的回答是不容易看到的,我貼了同樣的信息作爲第二個答案:

這是非常奇怪的!我剛剛下載了jqGrid和所有選中的複選框,並更改了xmlorg.htm以使用jquery-1.3.2的最小版本:所有作品。所以最後的建議是:你從http://www.ok-soft-gmbh.com/jqGrid/XmlTest/XmlTest.zip下載我用過的所有文件。然後解壓縮,將所有內容放在網站上,例如localhost(IIS)。將url修復到all.xml並從您的網站打開xmlorg.htm或xml.htm。它必須工作!

0

我正在使用jquery 1.5.2和jqgrid 4.0。 類似的問題發生在Chrome 5.0.396.0,但其他Chrome版本和IE/FF運行良好。

我也用jquery 1.4.4測試過,這個問題依然存在。 但是,當我用jQuery 1.3.2測試時,問題就解決了。在Chrome