2012-03-28 2 views
4

SlickGrid를 사용하기 시작했으나 페이징과 상호 작용할 수있는 원격 모델을 만드는 데 성공했습니다 플러그인. 내가 가진 유일한 문제는 브라우저 문제인 것처럼 보이지만 문제를 해결할 수있는 트릭을 알고 있다면 궁금합니다.SlickGrid 세로 ​​스크롤 막대가 제대로 표시되지 않습니다. 필터를 표시하거나 숨겨서 뷰포트의 크기를 조정하지 않은 경우

내 모델에서 AJAX를 통해 페이지별로 데이터 페이지를 가져오고 grid.setData()grid.render() 방법으로 표를 업데이트하고 있습니다.

내가 해결하고 싶은 문제는 필터 패널 (grid.hideTopPanel() 또는 grid.showTopPanel())의 현재 표시 여부를 변경하지 않는 한 데이터 길이가 변경되면 수직 스크롤 막대가 실제로 혼란 스럽습니다. 혼란 스러울 때 스크롤 막대의 스크롤 핸들이 크기가 바뀌지 않아서 현재 다른 행 수를 나타냅니다. 목록이 커지면 위아래로 스크롤 할 때 스크롤 핸들 크기가 점프합니다 .

"수정"은 브라우저가보기 포트 높이를 강제로 다시 계산하기 때문에 작동한다고 가정하고 있지만 강제로 그럴 수있는 방법이 있습니까? 아니면 내가하려는 일을하는 더 좋은 방법이 있습니까?

답변

3

Ok mleibman이 나를 곧게 만들었고 실제로 찾고 있던 것은 grid.updateRowCount()입니다. 나는 그가 grid.setData()에 이것에 대한 호출을 추가 할 것이라고 생각하지만, 지금은 2 개의 메소드 호출이 함께 사용되었는지 확인하십시오.

0

grid.invalidate()을 사용해 보셨습니까? 내 경험으로 그리드가 거의 모든 것을 다시 계산하도록합니다. 그것은 당신이 필요로하는 것보다 더 무거운 것일 수 있지만, 적어도 완전한 무효화가 문제를 해결하는지 알 수 있습니다.

+0

grid.setData() 메서드를 보면 무효화를 호출하지만 제안에 감사드립니다 –

+0

당신이'setData() '를 여러 번 호출하고 있다는 것을 몰랐습니다. 맞습니다. 데이터 참조를 계속 재설정하면 매번 'invalidate()'가 발생합니다. 당신이 고침을 발견해서 다행입니다. – njr101

0

나는 그것을 알아 냈다. grid.setData()으로 전화 한 후 grid.resizeCanvas()으로 전화해야합니다. 이 메서드는 grid.setData() 메서드의 일부 여야합니다.이 메서드를 호출하면 행 수가 달라지기 때문입니다. 그러나 어쨌든, 그것은 당신이해야 할 일입니다.

관련 문제