はじめまして。
ui-gridの使い方が間違っているのか、想定しない動作をしておりまして
恐れ入りますが、ご教授お願いいたします。

今回、ui-gridに表示するデータを設定し、カーソル位置を設定しようとしています。
1回目のデータ投入、カーソル設定は正常に動作しますが、
つづけて2回目、ui-gridにデータを投入(再描画用データ)を設定し
カーソル位置を設定しても先頭行へカーソルが移動してしまいます。
(カラムは問題ありません。)

使っているバージョンは以下になります。
AngularJS v1.6.3
ui-grid - v4.0.4

カーソル位置の設定は
$scope.gridApi.cellNav.scrollToFocusメソッドを使っています。
scrollToFocusメソッドには再描画したすでにgridへ設定している描画データの、
カーソル設定したいrowを渡しています。

ui-grid.jsを追ってみたのですが、ui-grid内部ではカーソル位置のrowデータを保持しているようです。
ですが、再描画を行っている事で、カーソル位置のrowデータがgrid表示データに存在せず
カーソルrowの位置が特定できず、先頭行へ移ってしまっているようです。

何かご存知の方いらっしゃいましたらご教授お願いいたします。

追記:

ui-gridサンプルから編集し、問題となっている処理を入れてみました。
http://plnkr.co/edit/mdcvgJqyPsJ9j2DHpiWR?p=preview
「Focus Row 50, Balance」ボタンがフォーカスを設定するボタンになりますが、
「Refresh Focus Row 50, Balance」ボタンを追加して、Gridの表示データを取り直して
フォーカスを設定する処理を追加しました。

このボタンを押すと、「Focus Row 50, Balance」ボタンではフォーカスが当たりますが、
「Refresh Focus Row 50, Balance」ではスクロールはするものの、フォーカスは当たっていないようです。

おそらくこの状態と同じような現象が起きているんじゃないかと思われます。