JavaScriptからngGridを選択し、gridOptions.selectItem()
を呼び出しています。 multiSelectをfalseに設定しているので、選択された行は1つだけです。新しく選択した行を表示するためにngGridが自動的にスクロールするようにしたいと思いますが、これを行う方法はわかりません:だれでも助けてくれますか?ngGridをスクロールして現在の選択を表示するにはどうすればよいですか?
関連トピック:マウスクリックで行選択を無効にすることはできますか?もしそうなら、どうですか?
を追加するように編集
可能であれば私はまた、選択された行のキーボードナビゲーションを無効にしたいと思います。
何が働いた:
AardVark71の答えは働きました。 ngGridがグリッドオブジェクト自体への参照を保持する変数ngGrid
をgridOptions
変数に定義していることがわかりました。
$scope.gridOptions.selectItem(itemNumber, true);
$scope.gridOptions.ngGrid.$viewport.scrollTop(Math.max(0, (itemNumber - 6))*$scope.gridOptions.ngGrid.config.rowHeight);
マイグリッドは13行ハイに固定され、そして私のロジックは、選択された行がグリッドの中央に表示されるようしよう:必要な機能は、このオブジェクトのプロパティを介して露出しています。
可能であれば、マウスの&キーボードの変更を無効にしたいと思います。
をこれはおそらく、「角度の道」に近いと同じ端実現:行はそれをすることができますクリックして選択されたときに有効であるが
// 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);
をも働いていた何
少し戸惑う。
これまでに入手したコードを表示できますか?あなたがscrollTopメソッドを利用できるように思えます。 https://github.com/angular-ui/ng-grid/issues/183と@ bryan-wtsの次のようなplunkerも参照してください。http://run.plnkr.co/plunks/oyIlX9/ – AardVark71
OKですこのヒントのおかげで、働いて!文書化されていない 'ngGrid'プロパティがあり、これは実際のグリッド自体への参照を保持する' gridOptions'プロパティに追加されています。ビューポートをスクロールする関数呼び出しは '$ scope.gridOptions.ngGridです。$ viewport.scrollTop(rowNumber * $ scope.gridOptions.ngGrid.config.rowHeight)' AardVark71 - これを回答に更新してください;私はあなたに信用します: どうもありがとう! – Max
うまくいけばうれしいですが、私は答えとしてそれを言い換えるでしょう – AardVark71