2013-07-03 159 views
4

我最近在我的一個項目中開始使用SlickGrid。在我的網格中,我有大約4,000行和6列。問題是第2列到第6列沒有爲前兩行渲染。對於其餘行,所有列都呈現得很好。此外,如果我再次向下滾動,則這些行的缺失列變得可見。換句話說,我只在頁面第一次生成時纔會看到問題。SlickGrid沒有正確渲染列

通過源代碼挖掘,我發現下列行引起了問題。如果我評論休息時間,那麼整個網格都會呈現沒有任何問題。

1407  // Do not render cells outside of the viewport. 
1408  if (columnPosRight[Math.min(ii - 1, i + colspan - 1)] > range.leftPx) { 
1409  if (columnPosLeft[i] > range.rightPx) { 
1410   // All columns to the right are outside the range. 
1411   break; 
1412  } 

看來這些行試圖跳過視口外的列的渲染。但是,我不明白爲什麼他們認爲我前兩行的第2-6列在視口之外(當它們明顯在裏面時)。

不幸的是,我不能在一個小例子中重現這個問題。所以我希望有人能夠從症狀的描述中發現問題。請幫忙。

+0

可能依賴於問題的代碼,所以最好看一些你的代碼,而不是SlickGrid源代碼...... – ghiscoding

+0

slickgrid(通常是任何網格)總是呈現在視口中的列以提高性能...請上傳一些代碼示例。也許初始化時有一些尺寸問題,或者您可能在加載時滾動網格。 –

回答

0

這可能是有一些特殊的字符(即<,>等)在你渲染的值,你可以使用自定義格式,以逃避這些字符:

function escapeHTMLFormatter(row, cell, value, columnDef, dataContext) { 
    if (value == null) { 
     return ""; 
    } else { 
     return (value + "").replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;"); 
    } 
}