Gesamt Artikel Graf
Wenn Sie die Gesamtanzahl der Elemente in der Liste suchen sich (in Bezug auf die Anzahl der Elemente in einer gefilterten Ansicht entgegengesetzt) Sie können direkt die $count
Unterkunft Liste zuzugreifen.
"/_vti_bin/ListData.svc/MPIC/$count"
Dies wird die Elementanzahl zurück.
Paging (falls erforderlich)
Paging zu simulieren REST verwenden Sie Folgendes ausführen können:
- Verwenden Sie den
$skip=n
Parameter überspringen die ersten n
Einträge nach dem $orderby
Parameter
- Verwenden Sie den Parameter , um die oberen
n
Einträge entsprechend der $orderby
undzurückzugebenParameter.
Umgang mit asynchronen Rückrufen in Ihrem Code
Das größte Problem ist, dass Sie zwei asynchrone Funktion Rückrufe haben, dass Sie die Summe der resultierenden Produkte erhalten verwenden. Da diese Funktionsaufrufe nicht im selben Umfang ausgeführt werden, können Sie nicht gleichzeitig auf ihre Werte zugreifen.
Eine Problemumgehung besteht darin, mithilfe der Funktionskette die Logik in die Rückruffunktion (en) zu verschieben.
Beispiel $ überspringen mit und oben $
Hier ist ein Beispiel die $skip
und $top
Parameter mit Ihrem bereitgestellten Code verwenden, eine rekursive Callback-Funktion die Gesamtzahl der Ergebnisse zu erhalten, bevor Sie den Text Ihrer ALLCount1
Aktualisierung Element.
$.getJSON("/_vti_bin/ListData.svc/MPIC?$select=Id&$orderby=Id&$top=1000&$inlinecount=allpages", function (data) {
var count = data.d.results.length;
updateTotal(count);
});
function updateTotal(total){
$.getJSON("/_vti_bin/ListData.svc/MPIC?$select=Id&$orderby=Id&$skip="+total+"&$top=1000&$inlinecount=allpages", function (data) {
var count = data.d.results.length;
if(count > 0){
updateTotal(total+count);
}
else{
$("#ALLCount1").text(total);
}
});
}
Beispiel $ skiptoken und $ oben mit
Wenn Sie $skiptoken
statt $skip
(wie bei der Abfrage eine Liste von 5000+ Artikel) zu verwenden sind eingeschränkt, können Sie es auf jeden Fall noch verwenden , aber du wirst ein bisschen mehr zu tun haben.
Während $skip
nur die Anzahl der zu überspringenden Elemente haben möchte, möchte $skiptoken
die ID des letzten zu überspringenden Elements.
Der Code wäre größtenteils derselbe wie oben, aber Sie müssen in die Datenergebnisse eintauchen und den ID-Wert des letzten Elements herauspicken. Ich überlasse das als Übung für den Leser.
updateTotal(0,0);
function updateTotal(skip,total){
$.getJSON("/_vti_bin/ListData.svc/MPIC?$select=Id&$orderby=Id&$skiptoken="+skip+"&$top=1000&$inlinecount=allpages", function (data) {
var count = data.d.results.length;
if(count > 0){
var lastItemId;
// TODO: get last item id from results here
updateTotal(lastItemId,total+count);
}
else{
$("#ALLCount1").text(total);
}
});
}
Also wenn ich auf die erste Zählung schaue. Es hat eine nächste, die bei 1016 beginnt. Ich denke, weil die ersten 16 Dokumente so gelöscht wurden. Wie funktioniert das Paging? Ich habe einige Kommentare gefunden, in denen es erwähnt wurde, aber nichts bestimmtes zur Ausführung. –
Sie möchten es immer noch auf 1000 beschränken, außer Sie wissen, wie viele die ganze Zeit gelöscht werden. Es ist besser, es auf 1000 zu beschränken, 984 zurückzugeben und eine genaue Anzahl zu erhalten. – Matt
[dieses Beispiel] (http://stackoverflow.com/questions/6951191/do-while-javascript-issue) sollte Ihnen den Einstieg erleichtern. Es enthält einen Beispielcode, der geändert werden muss. Sie können jedoch eine andere Frage stellen, wenn Sie Probleme damit haben. – Matt