JLynch7 / SlickGrid

A lightning fast JavaScript grid/spreadsheet
https://github.com/jlynch7/SlickGrid/wiki
MIT License
89 stars 76 forks source link

SlickGrid Dissapearing Text in Frozen Column on Horizontal Scroll #84

Closed stplajay closed 9 years ago

stplajay commented 9 years ago

I have used SlickGrid in my project. Grid contains 30 columns. Initially grid works fine. it has horizontal as well as vertical scroll. I have frozen first column. Issue is that when i scroll it horizontally and reached at right most and then after vertical scrolling frozen column data doesn't display. any suggestion please help.

initial page jpg

after scrolling jpg

Mingun commented 9 years ago

You are using branch 2.0-frozenRowsAndColumns, right? This is because bug in SlickGrid: in line 1947 slick.grid.js file missing five parameter. Because of that SlickGrid not rerendered frozen cells.

Quick Fix

Add d as five parameter to appendCellHtml in line 1947.

        } else if (options.frozenColumn > -1 && i <= options.frozenColumn) {
          appendCellHtml(stringArrayL, row, i, colspan, d);
        }

Why this error appears?

Consider the render function. First it takes rendered rows, and then deletes all rows from the cache, except the specified range. Because rendered rows takes with reserve in three rows, an error occurs only after vertical scroll for more than three rows, when starts rendering missing rows in renderRows function. This function call appendRowHtml for each rendered row, and that function check position right border every cell in row. If that position in visible range, cell rendered properly. But for frozen columns, values in columnPosRight array after horizontal scroll become smaller left border of viewport. And the execution goes to second branch of if condition. In that branch missing five parameter d in call appendCellHtml. Because of that cell do not rendered.

stplajay commented 9 years ago

Hi, Thank you so much. I have incorporated your comment into my solution and issue has been fixed. Thanks once again for your quick response. :)