在缓冲网格中以编程方式将一行滚动到视图中
Scroll a row into view programmatically in buffered grid
我有一个缓冲的分组网格,我想滚动查看某一行(我手头有记录和记录's/row 的索引)。
我试过无证的
grid.getView().scrollRowIntoView(index)
但这只适用于无缓冲的网格,因为它调用
view.getRow(row)
只有 returns 当前呈现的行,而不是未呈现的行。
是否有我忽略的可用官方功能,或者我还能做些什么来滚动到正确的记录?
bufferedRenderer 插件有一个函数 scrollTo(recordIdx)
。
gridpanel
或 gridview
或 dataview
中没有调用 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.
我有一个缓冲的分组网格,我想滚动查看某一行(我手头有记录和记录's/row 的索引)。
我试过无证的
grid.getView().scrollRowIntoView(index)
但这只适用于无缓冲的网格,因为它调用
view.getRow(row)
只有 returns 当前呈现的行,而不是未呈现的行。
是否有我忽略的可用官方功能,或者我还能做些什么来滚动到正确的记录?
bufferedRenderer 插件有一个函数 scrollTo(recordIdx)
。
gridpanel
或 gridview
或 dataview
中没有调用 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.