2016-04-13 5 views
0

Ich hatte eine Tabelle mit JavaScript erstellt, in der drei Spalten Event ID, Events und Total Count stehen. Jetzt muss ich die dritte Spalte, d. H. Gesamtanzahl in absteigender Reihenfolge sortieren. Ich habe online gesucht, wie man es sortiert. Ich weiß, wie man Tabellen für Standard-HTML-Tabelle ("order": [[ 2, "desc" ]]) sortiert, aber diese Tabelle wird unter Verwendung von JavaScript gebildet, also bin ich verwirrt. Ich könnte eine Schleife verwenden, um eine Tabelle rückwärts zu erstellen, d. H. for(var i=to; i>=from; i--), aber meine Ergebnis-JS-Tabelle ist das Ergebnis der Tabelle, die aus SQL generiert wird, in der "Ereignisse" nicht auf- oder absteigend sortiert sind. Mit anderen Worten, ich erstelle diese JavaScript-Tabelle aus der SQL-generierten Tabelle. Unten ist der Code an dem ich arbeite:Wie sortiere ich eine Javascript-Tabelle (aufsteigend oder absteigend), die das Ergebnis einer SQL-Tabelle ist?

<script> 
    $(function() { 
     CreateTable(GetSum('#displaytable')); 
    }); 

    function GetSum(tableIdWithHash) { 
     var Sum = []; 
     var EventIds = []; 
     var EventName = []; 
     var Data = []; 

     $(tableIdWithHash).find('.eventCounts').each(function(i){ 
     var Counte = $(this).html(); 
     var Ide = $(this).siblings('.Idevent').html(); 
     var eName = $(this).siblings('.eventNames').html(); 

      allSum.sort(function(a,b){ 
     if(a.eCount > b.eCount){ 
     return 1; 
     } else if (a.eCount < b.eCount){ 
     return -1; 
     } else{ 
     return 0; 
     } 
    }); 
     if (EventIds.indexOf(Ide) === -1) { 
      EventIds.push(Ide); 
      EventName.push(eName); 
     } 

     var index = EventIds.indexOf(Ide); 
     if (Sum[index] == undefined) { 
      Sum[index] = Number(Counte); 
     } 
     else { 
      Sum[index] += Number(Counte); 
     } 
     }); 

     Data.push(EventIds); 
     Data.push(EventName); 
     Data.push(Sum); 
     //"order": [[ 2, "desc" ]] 
     return Data; 
    }  
</script> 
+0

Ich habe empfohlen, das SQL-Server-Tag zu entfernen. SQL Server-Lösungen lösen JavaScript-Probleme nicht. –

+2

Ich empfehle Ihnen dringend, Sortieren (ORDER BY) und Summe (OVER()) mit SQL Server anstelle der Last auf dem Client –

+2

Je nachdem, was Sie tun, gibt es gültige Gründe zum Sortieren und auf dem Server, OR auf dem Client. Eine Größe passt nicht allen. Das heißt, wenn Sie es auf dem Client tun, denke ich, dass Sie zuerst Ihre Daten sortieren und formatieren und * dann * die Tabelle erstellen möchten; mach es nicht alles auf einmal. – Paul

Antwort

1

ich in der Frage sehen Sie Ihre aktuellen Daten nicht, so dass ich davon ausgehen, dass es so etwas wie folgt aussieht:

var data = [{eventId:1, eventName:'Fish fry', totalCount:5},...]; // where the ... indicates more records of that shape 

Ok Bei dieser Struktur können Sie Array.prototype.sort() verwenden, um die Daten vor dem Schreiben in eine Tabelle zu sortieren:

data.sort(function(a,b){ 
    if(a.totalCount > b.totalCount){ 
    return 1; 
    } else if (a.totalCount < b.totalCount{ 
    return -1; 
    } else{ 
    return 0; 
    } 
}); 
+0

Als ich oben genannten Code implementiert (und auch in der ursprünglichen Frage oben hinzugefügt), gab es mir NAN-Fehler. Ich habe diesen Link ausgecheckt (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/sort). Ich kann dieses Problem nicht lösen. – VicStat

+0

Überprüfen Sie dann die Typen in Ihrer eCount-Variable. Wenn es nicht mit GT- oder LT-Operatoren ausgewertet werden kann, erhalten Sie diesen Fehler. – Paul

Verwandte Themen