2.2.1 이상의 버젼의 ExtJS로 구현된 경우 IE8에서 그리드의 편집을 위해 셀을 클릭할때마다 왼쪽으로 GridBody가 스크롤되어  숨어버리는 버그가 있다. 솔직히 이 버그는 예전에 ExtJS를 2.2.1 으로 마이그레이션을 할 때 발견했던 부분이었는데 IE8에서와는 달리 Editable Grid에서 셀을 클릭할때 GridView.focusCell에서 버그가 발생하여 패널에  ScrollBar가 생기곤 했다.

생기곤 했다라는 말대로 항상 발생한 것은 아니고 그리드가  두개의 컬럼만 가지고 있는 경우나 GridBody의 width가 GridPanel의 width보다 작은 경우에는 발생하지 않았다.

 

다음은 IE8을 사용할 경우 앞서 말한 버그를 보여준다. Extjs의 샘플페이지 중 Editable Grid 페이지에서 셀을 클릭한 경우 스크롤이 생기면서 GridBody부분이 왼편으로 숨어버리는 화면이다. 아직 버그 패치는 안된거 같구 이후 수정되면 샘플페이지에서는 이런 화면은 안나오게 될 수도....

 



날짜필드를 수정하기 위해 클릭하는 순간 아래처럼....

 이 버그는 IE뿐만 아니라 크롬,파폭에서 동일한 증상이 발견은 되었지만 IE8처럼 아예 GridBody부분이 스크롤되어 숨겨지지는 않았던 터라 기냥 두었던 건데..이런 IE8에서만 이리 되다니...
어쩔수 없이 수정을...(귀차니즘...)

GridView 코드 부분을 직접 수정해도 되겠지만 오버라이드하는 구문으로 처리했으니 기존소스페이지에 포함시키기만 하면 된다. 코드는 첨부파일로....

 

 

ExtJS에서 많이 쓰이는 것중 하나가 그리드 또는 트리패널이 아닐까 싶다.

데이타 갱신이나 검색시 해당 레코드나 트리 노드에 선택포커스를 주게 된다.

페이징처리가 되는 그리드나 노드가 그다지 많지 않은 트리패널에서야

selectRow() 메소드나 select() 메소드로 해당 레코드와 노드가 선택되었슴만 표시해도 상관없다.

하지만 스크롤링 되는 경우 패널 하단에 위치한 레코드나 노드가 선택될 때

선택마스크는 표시가 되는데 선택위치로 자동스크롤링이 되지 않는다.

즉 선택된 곳에 스크롤바가 위치하게 하고 싶을 때...

그럴때는 focusRow() 나 ensureVisible() 로 선택된 레코드나 노드위치로 자동스크롤링을 해줄수 있다.

 

그리드인 경우

그리드패널.getView().focusRow(선택된 레코드의 Index);

 

트리패널인 경우

선택된트리노드.ensureVisible();

 
블로그 이미지

시반

시반(詩伴)이란 함께 시를 짓는 벗이란 뜻을 가지고 있습니다. 함께 나눌수 있는 그런 공간이길 바라며...

카테고리

분류 전체보기 (233)
개발 이야기 (73)
WEB2.0 (57)
DB2 (24)
MySQL (6)
오라클 (26)
기타 (44)
취미 (0)
잡담 (2)