2012-11-02 103 views
0

由於我是jqGrid中的新成員,對此問題我非常困惑。 我的數據只顯示10行。這是我的劇本;jqGrid只顯示10行

jQuery("#list").jqGrid({ 
    url:'dounfinish.php?q=1', 
    datatype: 'json', 
    mtype: 'POST', 
    closeafteredit:true, 
    colNames:['id','Date', 'Line','Model','Lotno','Qty','PIC'], 
    colModel :[ 
      {name:'id', index:'id', hidden:true, width:55}, 
      {name:'Date', index:'Date', width:90, editable:true, search:true, stype:'text',searchoption:{sopt:['cn']}}, 
      {name:'Line', index:'Line', width:80, editable:true, search:true, stype:'text',searchoptions:{sopt:['cn']}}, 
      {name:'Model', index:'Model', width:180, editable:true, search:true, stype:'text',searchoption:{sopt:['cn']}}, 
      {name:'Lotno', index:'Lotno', width:80, editable:true, search:true, stype:'text',searchoption:{sopt:['cn']}}, 
      {name:'Qty', index:'Qty', width:80, editable:true, search:true, stype:'text',searchoptions:{sopt:['cn']}}, 
      {name:'PIC', index:'PIC', width:180, editable:true, search:true, stype:'text',searchoption:{sopt:['cn']}} 
      ], 
//  pager: jQuery('#pager'), 
    gridview:true, 
    pager: '#pager', 
    width: '100%', 
    height: '100%', 
    rowNum:10, 
    rowList:[10,20,30], 
    sortname: 'Date', 
    sortorder: "desc", 
    viewrecords: true, 
    loadonce: true, 
//  imgpath: 'themes/basic/images', 
    caption: 'DAILY CHECK QTY', 
    editurl:'process3.php', 
    prmNames:{oper:'action',editoper:'editbaldefect',id:'def_id'} 
}); 

等的情況:

loadonce: true result View 1 - 10 of 10 --> column filter can work. 
loadonce: false result View 1 - 10 of 3500 --> column filter not working. 

爲什麼?


在開發工具顯示:

{"page":1,"total":33223,"records":"332222","rows":[]} 

,但在PHP的頁面出現: enter image description here


UPDATE

使用datetype : json也是我的jqGrid需要loadonce : true。我已經審判像硫S:

  1. 變化loadonce:假 - >所產生的所有記錄顯示,但無法使用工具欄過濾器
  2. 變化loadonce:真 - >結果只顯示10條記錄,但工具欄過濾器可以工作
  3. loadonce :true,rowNum:50 - > data only only 50(next button disable)
  4. 檢查查詢在phpmyadmin - >結果所有數據都可以顯示(查詢OK)
  5. 使用另一個表(OK一) - >結果仍然不起作用
  6. 使用另一個頁面,然後附加jqgr id - >仍然沒有工作

爲什麼jqgrid只能檢索10條記錄,但是這個表實際上有100.000條記錄? 爲什麼只是這張桌子,而另一張桌子可以工作。

回答

5

jqGrid最初被設計爲能夠使用基於服務器的數據填充網格。選項loadonce: true稍後介紹。因此,如果您不使用loadonce(或者如果您使用loadonce: false,則服務器負責對數據進行分頁,排序和過濾。每次用戶點擊列標題按列對數據進行排序,或者如果用戶填寫搜索工具欄,則將向服務器發送新請求。如果用戶更改每頁的行數(在尋呼機中選擇其他值爲10),那麼對服務器的新請求也將被髮送。選項page,rows,sidx,sord, _search並且通常爲filters。將被髮送到服務器的參數的默認名稱可以通過jqGrid的prmNames選項來提供(參見the documentation)。

我個人總是使用stringResult: true選項filterToolbar。案例中filters參數的格式與高級搜索相同(請參閱here)。

如果您使用loadonce: true那麼jqGrid從服務器獲取數據只有一次。因此,服務器應該在響應中返回所有數據,與jqGrid的rows參數無關。服務器應該只對數據進行正確排序。屬性page,totalrecords從服務器響應將被忽略。相應的值將根據rows的數據重新計算。

如果您使用loadonce: true,那麼在第一次加載數據之後,jqGrid將datatype更改爲"local"。因此,所有後來對數據進行排序,分頁和過濾的請求將在本地執行,而不會向服務器發出任何附加請求。

因此,如果您使用loadonce: true並且服務器返回10行數據,則jqGrid顯示"View 1 - 10 of 10",因爲它在服務器響應中只發現10行。

+0

此頁面是從其他頁面複製的。對於原始頁面它可以工作(服務器頁面查詢使用'SELECT *'),但是對於這個頁面不起作用(服務器頁面查詢使用'SELECT ... JOIN ...')。 – nunu

+0

爲什麼服務器只響應10行?實際上我的查詢獲得了100.000多條記錄。 – nunu

+0

@nunu:對不起,我已經回答過這個問題。如果你不使用'loadonce:true'(或者如果你使用'loadonce:false')**你的服務器負責數據的分頁,排序和過濾**。 jqGrid只是發送參數'page','rows','sidx'等。服務器應該返回**請求的排序和過濾**數據頁面。 ''行':'響應的一部分包含數據頁面,但是'「頁面」',''total「'和」records「'應該正確填寫。您在服務器響應中填寫明確錯誤的信息。 – Oleg