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

Scroll a row into view programmatically in buffered grid

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

我试过无证的

grid.getView().scrollRowIntoView(index)

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

view.getRow(row)

只有 returns 当前呈现的行,而不是未呈现的行。

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

bufferedRenderer 插件有一个函数 scrollTo(recordIdx)

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

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

if(record.isModel)

然后导致错误

Uncaught TypeError: Cannot read property 'isModel' of null

所以你必须在调用之前始终检查商店是否为空 scrollTo:

if(view.store.getCount()) view.bufferedRenderer.scrollTo(index);

该问题已在 Sencha 论坛中交叉发布,where Gary Schlosberg of the Sencha Support team 回答:

Have you tried the ensureVisible config? The callback option mentions usage with a BufferedStore.