0

インラインのクライアント側検索を備えた jqgrid があります。データベースが 0 レコードを返すと、グリッドを非表示にしてカスタム メッセージを表示しようとしています。問題は、フィルターを使用すると同じことが起こることです。バックエンドの応答から行数を取得する必要がありますが、以下の行はどれも機能しません。ページが読み込まれると 5 と 5 を取得し、フィルター処理を行うと 0 と 0 を取得します。これはどのように達成できますか?

 .jqGrid('getGridParam', 'records')
 .jqGrid('getGridParam', 'reccount')


var contratsAC=$("#ContratsAC");
contratsAC.jqGrid({
            url:'<?php echo base_url().'rest/AC_Rest/get_contrats/'?>',    
            mtype : "post",           
            datatype: "json",          
            colNames:['Nr dossier','Type','Nom','Statut','Date creation','Date derniere maj','Commentaires','Auteur'],   
            colModel:[  
                {name:'nr_dossier',index:'nr_dossier',search:false,  align:"center"},       
                {name:'type',index:'type',search:false, align:"center"},

                {name:'nomClient',index:'nomClient',search:false, align:"center"},
                {name:'statut',index:'statut',search: true, sortable: false,  width:180, stype:'select', 
                    searchoptions:{ value:statuts}, editable: false},
                {name:'date_cre',index:'date_cre',search:false,  align:"center"},
                {name:'dern_date_maj',index:'dern_date_maj',search:false, align:"center"},  
                {name:'commentaires',index:'commentaires',search:false, align:"center"}, 
                {name:'auteur',index:'auteur',search:false, align:"center"}                         
            ],
            rowNum:10,
            jsonReader: {
                 root: "rows", 
                  page: "page", 
                  total: "total", 
                  records: "records", 
                  repeatitems: false, 
                  id: "nr_dossier",
                  userdata: "userdata"
            },          
            width: 960,
            height: "100%",
            rowList:[10,20,30],
            pager: '#pager1',
            sortname: 'nr_dossier',
            viewrecords: true,
            rownumbers: true,
            gridview: true,
            loadonce: true,
            loadComplete: function(data){ 
                alert(contratsAC.jqGrid('getGridParam', 'records'));
                alert(contratsAC.jqGrid('getGridParam', 'reccount'));
                if (0==contratsAC.jqGrid('getGridParam', 'records'))
                {
                    contratsAC.jqGrid('GridUnload');
                    $("#contratsACNoDataMessage").html('<span>Aucun enregistrement a afficher.</span>');
                } 
                else $("#ContratsACContainer").show();
            },
            pagination:true,
            }).navGrid('#pager1',
                    {add: false, 
                    edit:false,
                    del:false});
contratsAC.jqGrid('filterToolbar',{searchOnEnter:true,stringResult: true});
4

2 に答える 2

2

グリッドによって保持されているデータ配列の長さを取得してみてください。

$("#ContratsAC").jqGrid('getGridParam', 'data').length;
于 2012-08-23T09:31:13.350 に答える
0

以下は、すべての行を提供します-初期データソースベース

contratsAC.jqGrid('getGridParam', 'records');

現在のページの行数を取得するには、フィルタリング後に次のように使用します。

contratsAC.jqGrid('getGridParam', 'reccount');

フィルタリング後にすべてのページのすべてのレコードを取得するには、以下を使用します

loadComplete: function (gridData) {
                    var isSearchPerformed = $grid.getGridParam("postData")._search;
                    if (isSearchPerformed) {
                        $("#spanFilterTotal").text(gridData.records);                        
                }
于 2016-03-23T16:35:55.540 に答える