2016-08-08 6 views
3

Ich habe eine Tabelle mit den Spalten Name, Category, DocumentName und Date_generated. DocumentName sollte eine sekundäre Sortierspalte sein, also zum Beispiel, wenn ich nach Name in desc Reihenfolge sortieren, sollte Dokumentname immer in aufsteigender Reihenfolge sein. Die Sortierung sollte beim Klick auf den Tabellenkopf erfolgen.Mehrspaltige Sortierung mit Winkel JS

Im Kopf habe ich die Spaltennamen erwähnt haben, wie folgt:

beide sind entweder
ng-click="orderByFieldName=['name','doc_name']; sortOrder=!sortOrder" 

und in ng-repeat als orderBy:orderByFieldName:sortOrder

Aber jetzt aufsteigend sortiert oder bestellen .. absteigend zusammen Wie können wir eine Standard-Sortierreihenfolge für Doc-Name allein?

+0

Ich habe Frage, die "Dokumentname sollte immer in aufsteigender Reihenfolge sein" was bedeutet es ?? Wenn Sie documentname als Sortierung angeben, ändert sich dies entsprechend dem Klick –

+0

ex: Ich habe 5 Namen als 'Ashok' und 5 andere Namen als 'Rathod' und Ashok hat Dokumentname A, C, D, E, B dann sollte meine Tabelle angezeigt werden Reihen wie Ashok A, Ashok B, Ashok C, Ashok D, Ashok E, Rathod X .... – xss

Antwort

0
This was achieved using different sortOrder for the fields and based on current sortOrder we toggle the doc_name as shown below: 

$scope.customSort = function() { 

      var docName = 'doc_name'; 
      if (!$scope.sortOrder) { 
       docName = '-doc_name'; 
      } 

      if ($scope.orderByFieldName == 1) { 
       if ($scope.sortFlag == 1) { 
        $scope.staffNameSortOrder = !$scope.staffNameSortOrder; 
       } 
       else { 
        $scope.staffNameSortOrder = false; 
        docName = 'doc_name'; 
        $scope.sortFlag = 1; 
       } 

       $scope.orderByFieldName = ['staff_name', docName]; 
       $scope.sortOrder = $scope.staffNameSortOrder; 
      } 
else if ($scope.orderByFieldName == 3) { 
       if ($scope.sortFlag == 3) { 
        $scope.docNameSortOrder = !$scope.docNameSortOrder; 
       } 
       else { 
        $scope.docNameSortOrder = false; 
        $scope.sortFlag = 3; 
       } 
       $scope.orderByFieldName = ['doc_name']; 
       $scope.sortOrder = $scope.docNameSortOrder; 

      } 
} 

In the ng-repeat you can add orderBy:orderByFieldName:sortOrder