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

时间:2016-09-01 15:05:24

标签: javascript extjs extjs6-classic

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

我尝试过无证件

grid.getView().scrollRowIntoView(index)

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

view.getRow(row)

只返回当前渲染的行,而不是那些未渲染的行。

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

2 个答案:

答案 0 :(得分:4)

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

调用gridpanel的{​​{1}}或gridviewdataview中没有任何功能,因此我猜您必须直接从您的网格中调用bufferedRenderer.scrollTo

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

null

然后导致错误

  

未捕获的TypeError:无法读取null的“isModel”属性

因此,在调用if(record.isModel) 之前,您必须始终检查商店是否为空:

scrollTo

答案 1 :(得分:2)

这个问题已在Sencha论坛中转发,where Gary Schlosberg of the Sencha Support team回答:

  

您是否尝试过ensureVisible配置?回调选项提到了使用BufferedStore。