2015-04-14 13 views
8

Ich arbeite mit eckigen ui-Grid-Version 3.0 und kann nicht den Weg finden, den Index der Zeile zu erhalten, um eine Nummerierung Spalte zum Gitter hinzuzufügen. Ich möchte mir helfen.Wie bekomme ich Zeilenindex in angular ui-Grid 3.0

+0

Ich möchte Ihnen auch helfen, aber zuerst müssen Sie uns zeigen, was Sie versucht haben, damit wir Ihnen helfen können, es zu verbessern. –

+0

@DavidGrinberg Ich möchte den Index der Zeile von CellTemplate erhalten. ng-grid wird auf diese Weise erhalten row.rowIndex, aber nicht, wie es in ui-grid 3.0 zu tun ist – cristianqr

Antwort

23

Es gibt keinen Weg, den Index der Reihe leicht zu bekommen, also hängt es davon ab, was Sie versuchen zu tun. Was erwarten Sie von der Nummerierung, wenn jemand die Daten sortiert - möchten Sie, dass die Zahlen so bleiben, wie sie in den Originaldaten waren, oder möchten Sie, dass sie sich ändern und an der neuen Sortierreihenfolge ausgerichtet werden?

In der FAQ http://ui-grid.info/docs/#/tutorial/499_FAQ finden wir:

Die Frage hier ist, was Sie wirklich zu erreichen versuchen. Möchten Sie den tatsächlichen Zeilenindex oder möchten Sie eine sequenzielle ID in allen Zeilen anzeigen?

Wenn letzteres, dann können Sie es tun, indem sie nur einen Zähler Spalte auf Ihre Daten hinzufügen:

$scope.myData.forEach(function(row, index){ 
    row.sequence = index; 
}); 

Wenn Sie den Index der Zeile innerhalb der Gitter Einbauten zeigen wollen, dann kommt es auf dem intern du willst. Sie können den Index der Zeile in grid.rows abrufen, der die Zeile in der ursprünglichen Zeilenliste (nicht gefiltert oder sortiert) oder den Index der Zeile in grid.renderContainers.body.visibleRowCache (gefiltert und sortiert) oder den Renderindex der Zeile innerhalb der aktuell angezeigten Zeilen (bei Virtualisierung ist dies in der Regel eine besonders nutzlose Nummer).

Wenn Sie auf OK sind, dass, wenn jemand sortiert oder Filter dann werden die Zahlen ändern, dann könnte man es mit einem Celltemplate tun, die so etwas wie sein würde:

cellTemplate: '<div class="ui-grid-cell-contents">{{grid.renderContainers.body.visibleRowCache.indexOf(row)}}</div>' 
+0

Ich möchte die Sequenz zeigen ... können Sie erklären, wie Sie den Zählerwert von oben für jede Iteration zuordnen? Danke – Jay

+0

das funktioniert für mich, aber wenn ich Tabelle exportiere, hat es diese Indexnummern verpasst. –

+0

Der Exporteur arbeitet mit den zugrunde liegenden Daten, nicht mit der gerenderten Version. Wenn Sie einen Index möchten, der auch mit dem Export funktioniert, müssen Sie eine nummerierte Sequenzspalte in Ihre Daten einfügen. – PaulL

15

Celltemplate: ' {{rowRenderIndex + 1}}‘

0

durch diese Art und Weise mit diesem Problem zu lösen ...

$http.get('./api/ioni_users') 
     .success(function(data) { 
      $scope.gridOptions.data = data; 
      angular.forEach(data, function(data, index) { 
       data["index"] = index+1; 
       //data.push({"index":index+1}) 
      }) 
     }); 
0

die für mich gearbeitet folgenden als ich den Index o zu sehen, benötigt Für die Zeile, die sich auf den gesamten Datensatz bezog, nicht nur, was für den Benutzer sichtbar war. Es kann gereinigt werden, aber dies ist der Roh-Code, die ich bekommen konnte die Formel, das hilft

((0/100)+((2*100)-100))+1 where 

0 = rowIndex (Zero Based) 
100 = pagination page size 
2 = current page 
+1 = because the array is zero based 


cellTemplate: '<div class="ui-grid-cell-contents">{{(((grid.renderContainers.body.visibleRowCache.indexOf(row)/grid.options.paginationPageSize)*100)+((grid.options.paginationPageSize * grid.options.paginationCurrentPage) - grid.options.paginationPageSize)) + 1}} </div>' 

Hoffnung arbeiten mit.

Verwandte Themen