0

KoGrid を使用して「アセット」のリストを表示し、同じアセットを Google マップに表示したいと考えています。ユーザーがマップ内のピンをクリックすると、リスト内の対応するアセットが下にスクロールされて上部に表示されます。おまけ: 既に表示されている場合は何もしないでください。

以前に別のリストでこれを行ったことがありますが、並べ替えとフィルター処理との相互作用により、しばらくの間問題が発生しました (並べ替えまたはフィルター処理を行うたびに、アセットのインデックスを再計算する必要がありました)。

koGridでこれを行うことはできますか? このグリッドに切り替える前に、これを理解する必要があります。例や助けをいただければ幸いです。

4

1 に答える 1

4

$viewport.scrolltopグリッドへの参照を取得して gridsメソッドを呼び出す必要があると思います。注: 私はこれをテストしませんでした。私が行ったことに基づいて同様のことを書いただけです。

plugins: [{
    onGridInit: function (g) {
// maybe add a method to your view model
        viewModel.scrollTo = function (index, key) { // index of item in filter data, key is something i made up
            if (index > g.filteredData().length - 8) { // 8 is the default excess_rows value in kogrid
                g.$viewport.scrollTop(g.$viewport.scrollTop() + (g.config.rowHeight * index));
            }
            // if you want to select the row (set time out because ko grid dynamically creates the rows rendered in the grid)
            setTimeout(function () {
                var i = ko.utils.arrayFirst(g.renderedRows(), function (row) {
                    // some function that finds the entity
                    return row.entity.key === key;
                });

                if (i) {
                    g.selectionService.ChangeSelection(i) // this will select the row
                }
            }, 100);

        }// assume self is your view model
    }
}]
于 2013-05-05T04:36:34.630 に答える