2017-12-19 6 views
1

Ich möchte die Gesamtzahl der Datensätze nach der Suche überprüfen. Aber getGridParam("records") nicht nach trigger("reloadGrid") ausgeführt.So erhalten Sie die Gesamtzahl mit getGridParam() nach dem Trigger ("reloadGrid")

Hier ist mein Code.

goSearch : function() { 
    var jsonObj = {}; 
    var $jqGrid = $("#jqGrid"); 

    if ($("#selectId").val() != "c") { 
     jsonObj.serviceImplYn = $("#selectId").val(); 
    } 

    $jqGrid.setGridParam({ 
     datatype  : "json", 
     postData  : {"param" : JSON.stringify(jsonObj)}, 
     loadComplete : function(data) { 

      if (data.rows.length < 1) { 
       alert("no data."); 
      } 
     } 
    }).trigger("reloadGrid"); 

    //following line not running! first run value = 0, second = success 
    var totalCnt = $jqGrid.getGridParam("records"); 

    console.log(totalCnt); 
} 

Wie Gesamtzahl in der ersten goSearch() laufen zu bekommen?

+0

Ihr aktueller Code ausführen 'var Totalcnt = $ jqGrid.getGridParam ("Aufzeichnungen");' nach ** ** beginnt Ajax-Request, der die Daten vom Server lädt, aber ** vor ** die Daten sind geladen. Sie sollten einfach die Zeile 'var totalCnt = $ jqGrid.getGridParam (" records ");' innerhalb von 'loadComplete' verschieben, die * nach * dem Laden der Daten ausgeführt wird. – Oleg

Antwort

0

Sie sollten entweder den Befehl ausführen

var totalCnt = $jqGrid.getGridParam("records"); 

in Loadcomplete Sie

$jqGrid.setGridParam({ 
    datatype  : "json", 
    postData  : {"param" : JSON.stringify(jsonObj)}, 
    loadComplete : function(data) { 

     if (data.rows.length < 1) { 
      alert("no data."); 
     } 
     var totalCnt = $jqGrid.getGridParam("records"); 
    } 
}).trigger("reloadGrid"); 

oder führen Sie es in setTmeout Funktion Post zu warten, bis Ajax-Anforderung die Daten laden gemacht wird, so dass Sie bekommen können die benötigten Informationen.

setTimeout(function() { 
    var totalCnt = $jqGrid.getGridParam("records"); 
}, 300); 
Verwandte Themen