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

Scroll a row into view programmatically in buffered grid

本文关键字:滚动 视图 编程 缓冲 网格 方式      更新时间:2023-09-26

我有一个缓冲的,分组的网格,我想滚动到视图的某一行(我有记录和记录的/行的索引在手)。

我已经尝试了未记录的

grid.getView().scrollRowIntoView(index)

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

view.getRow(row)

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

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

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

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

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

if(record.isModel)

然后导致错误

Uncaught TypeError: Cannot read property 'isModel' of null

所以你必须在调用scrollTo:

之前检查存储是否为空
if(view.store.getCount()) view.bufferedRenderer.scrollTo(index);

这个问题已经在Sencha论坛上交叉发布,Sencha支持团队的Gary Schlosberg回答:

你试过ensureVisible配置吗?回调选项提到了BufferedStore的用法。