LightSwitch HTML 无限滚动错误
LightSwitch HTML infinite scrolling bug
亲爱的,
在我的屏幕上,我有一个高度为 "Stretch to Container" 的列布局 "Root",其中有 2 行布局 A 和 B,它们的高度也都是 "Stretch to Container" . A和B各包含一个table控件(网格),有几万条记录。这是可以的,因为 LightSwitch 对结果进行分页,一次只获取 45 条记录,直到您滚动到底部,然后它获取接下来的 45 条记录等...(无限滚动)
注意:两个网格的垂直对齐方式为 "Fit to Content"。
但是尝试设置布局A的isVisible = false(在设计器中,或者在postRender方法中:contentItem.isVisible = false)和运行应用程序,现在B占据了整个水平space 符合预期,但是 B 中包含的 table 不知道什么时候开始获取记录,即使您没有滚动到底部,它也会在 45 条记录后继续获取 45 条记录,直到应用程序停止响应并且浏览器崩溃。
如果隐藏 B 并显示 A,则 A 的 table 会发生相同的行为。
我们尝试追踪 LightSwitch JS 文件中的问题,但无济于事。而且我们无法想出令人满意的解决方法。
有没有人遇到过这种奇怪的行为并找到了解决办法?我们需要通过在其他布局上设置 isVisible=false 来实现这种类似选项卡的多种布局功能并一次显示一个。
此缺陷似乎存在于 Microsoft LightSwitch 库的 tryLoadMoreEntities 函数中。
此函数通过比较 table 的高度与视图区域 (scrollHelper.viewHeight) 的高度来决定是否应将更多项目添加到 table (needMoreItems)。
不幸的是,当 table 的大小设置为 "Fit to Content" 并被隐藏时,table 的高度计算为零,这总是导致通过调用loadMoreEntities 方法。
话虽如此,您应该可以通过如下修改此函数来纠正此缺陷:
function tryLoadMoreEntities(table) {
var collection = table._collection;
if (!collection) {
return;
}
if (collection.state === _VisualCollectionState.idle) {
var scrollHelper = table._scrollHelper,
needMoreItems =
table.data._isActivated &&
table._tableElement.is(":visible") &&
table._tableElement.height() - scrollHelper.viewTop <
2 * scrollHelper.viewHeight;
if (needMoreItems) {
loadMoreEntities(table);
} else {
endLoading(table);
}
}
}
此修订引入了对 table 元素可见性的额外检查,这应该可以防止您遇到的持续加载。
亲爱的,
在我的屏幕上,我有一个高度为 "Stretch to Container" 的列布局 "Root",其中有 2 行布局 A 和 B,它们的高度也都是 "Stretch to Container" . A和B各包含一个table控件(网格),有几万条记录。这是可以的,因为 LightSwitch 对结果进行分页,一次只获取 45 条记录,直到您滚动到底部,然后它获取接下来的 45 条记录等...(无限滚动)
注意:两个网格的垂直对齐方式为 "Fit to Content"。
但是尝试设置布局A的isVisible = false(在设计器中,或者在postRender方法中:contentItem.isVisible = false)和运行应用程序,现在B占据了整个水平space 符合预期,但是 B 中包含的 table 不知道什么时候开始获取记录,即使您没有滚动到底部,它也会在 45 条记录后继续获取 45 条记录,直到应用程序停止响应并且浏览器崩溃。 如果隐藏 B 并显示 A,则 A 的 table 会发生相同的行为。
我们尝试追踪 LightSwitch JS 文件中的问题,但无济于事。而且我们无法想出令人满意的解决方法。
有没有人遇到过这种奇怪的行为并找到了解决办法?我们需要通过在其他布局上设置 isVisible=false 来实现这种类似选项卡的多种布局功能并一次显示一个。
此缺陷似乎存在于 Microsoft LightSwitch 库的 tryLoadMoreEntities 函数中。
此函数通过比较 table 的高度与视图区域 (scrollHelper.viewHeight) 的高度来决定是否应将更多项目添加到 table (needMoreItems)。
不幸的是,当 table 的大小设置为 "Fit to Content" 并被隐藏时,table 的高度计算为零,这总是导致通过调用loadMoreEntities 方法。
话虽如此,您应该可以通过如下修改此函数来纠正此缺陷:
function tryLoadMoreEntities(table) {
var collection = table._collection;
if (!collection) {
return;
}
if (collection.state === _VisualCollectionState.idle) {
var scrollHelper = table._scrollHelper,
needMoreItems =
table.data._isActivated &&
table._tableElement.is(":visible") &&
table._tableElement.height() - scrollHelper.viewTop <
2 * scrollHelper.viewHeight;
if (needMoreItems) {
loadMoreEntities(table);
} else {
endLoading(table);
}
}
}
此修订引入了对 table 元素可见性的额外检查,这应该可以防止您遇到的持续加载。