KoGrid - 自动滚动到选中

时间:2013-03-05 14:50:35

标签: knockout.js kogrid

我想使用KoGrid显示“资产”列表,并在Google地图中显示相同的资源。当用户单击地图中的图钉时,列表中的相应资源应向下滚动以在顶部显示。 额外奖励:如果已经在视野中,请不要做任何事情。

之前我已经在另一个列表上完成了此操作,并且与排序和过滤的交互导致了我一段时间的问题(每次排序或过滤时我都必须重新计算资产的索引)。

我可以用koGrid做到这一点吗?在切换到此网格之前,我需要弄清楚这一点。 任何例子或帮助表示赞赏。

1 个答案:

答案 0 :(得分:4)

我认为您需要获取对网格的引用并调用网格$viewport.scrolltop方法。注意:我没有对此进行测试,我只是根据我所做的类似的事情来编写它。

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
    }
}]