在缓冲网格中以编程方式将行滚动到视图中

Ale*_*der 0 javascript extjs extjs6-classic

我有一个缓冲的分组网格,我想滚动查看某一行(我手头有记录和记录/行的索引)。

我已经尝试过无证

grid.getView().scrollRowIntoView(index)
Run Code Online (Sandbox Code Playgroud)

但这仅适用于无缓冲网格,因为它调用

view.getRow(row)
Run Code Online (Sandbox Code Playgroud)

它只返回当前呈现的行,而不是未呈现的行。

是否有我忽略的官方功能可用,或者我还能做些什么来滚动到正确的记录?

Ale*_*der 5

bufferedRenderer 插件有一个功能scrollTo(recordIdx)

gridpanelor gridviewor dataviewthat call 中没有函数bufferedRenderer.scrollTo,所以我猜你必须getView().bufferedRenderer.scrollTo直接从你的网格中调用。

更新:请注意,scrollTo如果 store 为空,则可能不会调用,因为这会导致框架中的错误。原因是scrollTo取记录索引;如果索引低于 0,它将被设置为 0,如果它是 store.Count() 或更大,它将被设置为 store.Count()-1(如果商店为空,则为 -1)。然后,从 store ( getAt(index)) 中获取记录,null当且仅当 store 为空时才返回该记录,然后检查该记录是否确实是一个模型:

if(record.isModel)
Run Code Online (Sandbox Code Playgroud)

然后导致错误

未捕获的类型错误:无法读取 null 的属性“isModel”

因此,在调用之前,您必须始终检查商店是否为空scrollTo

if(view.store.getCount()) view.bufferedRenderer.scrollTo(index);
Run Code Online (Sandbox Code Playgroud)