2017-04-12 85 views
-1

逗人,的LightSwitch HTML無限滾動的bug

在我的屏幕我有一個欄佈局「根」與「拉伸以集裝箱」的高度,它裏面有2個佈局A和B,都具有高度「拉伸到容器」也是如此。 A和B中的每一個都包含數萬條記錄的表格控件(網格)。這是可以的,因爲LightSwitch每次只讀取45條記錄,直到您滾動到底部,然後它會取回接下來的45條記錄等...(無限滾動)

注意:兩個網格都垂直對齊「適合內容」。

然而,嘗試設置佈局A的isVisible = false(在設計器中,或在postRender方法中:contentItem.isVisible = false)並運行應用程序,現在B按預期佔用整個水平空間,但表中包含的表B不知道何時逐步提取記錄,即使您不滾動到底部,也會在45條記錄之後繼續提取45條記錄,直到應用程序停止響應並且瀏覽器崩潰。 如果您隱藏B並顯示A,則A行爲會發生同樣的行爲。

我們試圖在LightSwitch JS文件中跟蹤問題無濟於事。我們無法提出令人滿意的解決方法。

有沒有人遇到過這種奇怪的行爲,並找到了解決辦法?我們需要實現多個佈局的類似標籤的功能,並通過在其他設置上設置isVisible = false來一次顯示一個。

回答

1

此漏洞似乎位於Microsoft LightSwitch庫中的tryLoadMoreEntities函數中。

該函數通過將表格的高度與視圖區域的高度(scrollHelper.viewHeight)進行比較來決定是否應將更多項目添加到表格(needMoreItems)。

不幸的是,當表的大小設置爲「適合內容」且隱藏時,表的高度計算爲零,並且這總是通過調用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); 
     } 
    } 
} 

該版本引入了表元素的可見性的額外的檢查,應防止連續加載你經歷。

+0

我不能非常感謝你克里斯,那修好了。 請注意,有兩個'tryLoadMoreEntities'函數(另一個用於列表視圖),都可以用相同的方式糾正。 – user1533706

+0

親愛的克里斯,我想知道你是否也可以看看這個問題:http:// stackoverflow。 com/questions/43407557/lightswitch-html-root-screen-layout-extend-beyond-the-screen-when-its-height – user1533706

+0

今天晚些時候我會看看,讓我知道我是否可以幫忙 –