Ich setze die Auswahl meiner ngGrid von JavaScript, Aufruf gridOptions.selectItem()
. Ich habe multiSelect auf false gesetzt, so dass immer nur eine Zeile ausgewählt ist. Ich möchte, dass das ngGrid automatisch scrollt, um die neu ausgewählte Zeile anzuzeigen, aber ich weiß nicht, wie ich das tun soll: Kann mir bitte jemand helfen?Wie scrolle ich ein ngGrid, um die aktuelle Auswahl anzuzeigen?
Zu einem verwandten Thema: Kann ich die Zeilenauswahl per Mausklick deaktivieren? Wenn das so ist, wie?
Edited
Ich würde auch Tastatur-Navigation der ausgewählten Zeile möchte hinzufügen, deaktivieren, falls möglich.
Was hat funktioniert:
AardVark71 Antwort gearbeitet. Ich entdeckte, dass ngGrid eine Eigenschaft auf der gridOptions
Variable definiert, die einen Verweis auf das Gitterobjekt selbst enthält. Die notwendigen Funktionen werden über Eigenschaften dieses Objekts ausgesetzt:
$scope.gridOptions.selectItem(itemNumber, true);
$scope.gridOptions.ngGrid.$viewport.scrollTop(Math.max(0, (itemNumber - 6))*$scope.gridOptions.ngGrid.config.rowHeight);
Mein Gitter auf 13 Reihen hoch festgelegt ist, und meine Logik versucht, die ausgewählte Zeile erscheint in der Mitte des Gitters zu machen.
Ich möchte immer noch die Maus & Tastatur Änderungen an der Auswahl, wenn möglich zu deaktivieren.
Was auch gearbeitet:
Dies ist wahrscheinlich näher an der ‚Angular Way‘ und erreicht das gleiche Ziel:
// This $watch scrolls the ngGrid to show a newly-selected row as close to the middle row as possible
$scope.$watch('gridOptions.ngGrid.config.selectedItems', function (newValue, oldValue, scope) {
if (newValue != oldValue && newValue.length > 0) {
var rowIndex = scope.gridOptions.ngGrid.data.indexOf(newValue[0]);
scope.gridOptions.ngGrid.$viewport.scrollTop(Math.max(0, (rowIndex - 6))*scope.gridOptions.ngGrid.config.rowHeight);
}
}, true);
obwohl der Effekt, wenn eine Zeile durch Anklicken ausgewählt wird, kann ein bisschen beunruhigend sein.
Können Sie Code von dem zeigen, was Sie bis jetzt erhalten haben? Es klingt, als könnten Sie die Methode scrollTop verwenden. Siehe auch https://github.com/angular-ui/ng-grid/issues/183 und den folgenden Plocker von @ bryan-watts http://run.plnkr.co/plunks/oyIlX9/ – AardVark71
OK ich habe Es funktioniert, dank diesem Tipp! Es gibt eine undokumentierte "ngGrid" -Eigenschaft, die der Eigenschaft "gridOptions" hinzugefügt wird, die einen Verweis auf das eigentliche Raster selbst enthält. Der Funktionsaufruf zum Scrollen des Ansichtsfensters lautet dann $ scope.gridOptions.ngGrid. $ Viewport.scrollTop (rowNumber * $ scope.gridOptions.ngGrid.config.rowHeight) 'AardVark71 - Bitte aktualisieren Sie dies auf eine Antwort & ich werde es Ihnen gutschreiben : Danke vielmals! – Max
Froh, dass es für Sie funktioniert hat, werde ich es als Antwort umformulieren. – AardVark71