0

私は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ページに表示されます: ここに画像の説明を入力してください


アップデート

私のjqgridは使用していてdatetype : json、また必要です。私はloadonce : trueすでにこのように試用しています:

  1. loadonceを変更します:false->すべてのレコードが表示されますが、ツールバーフィルターを使用できません
  2. loadonceを変更します:true->結果には10レコードしか表示されませんが、ツールバーフィルターは機能します
  3. loadonce:true、rowNum:50->データは50のみを表示します(次のボタンを無効にします)
  4. phpmyadminでクエリを確認->すべてのデータが表示できる結果(クエリOK)
  5. 別のテーブルを使用する(OK 1)->結果はまだ機能しません
  6. 別のページを使用してjqgridを添付->まだ機能しない

jqgridが10レコードのみを取得するのに、このテーブルには実際には100.000レコードがあるのはなぜですか?そして、なぜこのテーブルだけが機能するのに、別のテーブルが機能するのか。

4

1 に答える 1

5

jqGrid は元々、サーバー ベースのデータでグリッドを埋めることができるように設計されました。オプションloadonce: trueは後で導入されました。したがって、使用しない場合loadonce(または使用する場合loadonce: false)は、サーバーがデータのページング、並べ替え、およびフィルタリングを担当します。ユーザーが列ヘッダーをクリックしてデータを列でソートするたびに、またはユーザーが検索ツールバーに入力すると、サーバーへの新しい要求が送信されます。ユーザーがページあたりの行数を変更した場合 (ページャーで 10 などの他の値を選択)、サーバーへの新しい要求も送信されます。オプションpagerowssidxsord_searchおよび通常filters. サーバーに送信されるパラメーターのデフォルト名は、prmNamesjqGrid のオプションで変更できます (ドキュメント)。

私は個人的に常にstringResult: trueのオプションを使用していますfilterToolbar。この場合のパラメータの形式はfilters、高度な検索の場合と同じです (ここを参照)。

loadonce: truejqGridを使用すると、サーバーからデータを1 回だけ取得します。したがって、サーバーは、jqGridのパラメーターに関係なく、応答ですべてのデータを返す必要があります。rowsサーバーはデータを正しくソートするだけです。プロパティpagetotalおよびrecordsサーバーからの応答は無視されます。のデータに基づいて、対応する値が再計算されrowsます。

loadonce: truejqGridを使用すると、データの最初のロード後に変更datatypeされます。"local"そのため、データの並べ替え、ページング、およびフィルタリングに対する以降のすべての要求は、サーバーへの追加要求なしでローカルに実装されます。

したがって、サーバーが 10 行のデータを返す場合、サーバーの応答で 10 行しか見つからないためloadonce: true、jqGrid が表示されます。"View 1 - 10 of 10"

于 2012-11-02T10:26:48.793 に答える