티스토리 뷰

업무를 할때 그리드를 표시한 후 유의해야할 점들이 있다.

본인도 이 점에 대해 간과하고 있다가 최근에서야 문제점을 깨달아서

이에대해 간략히 정리해보고자 한다.


먼저 그리드에 뿌려진 데이터를 가져오기 위해서 쓰는 함수는

(jQuery 위젯을 통해 제공되는 함수)

getrows, getdisplayrows, getrowdata, getboundrows ... 

등이 있다.


이 차이점을 분명히 인지하고 써야만

실수로 잘못된 데이터를 가져오는 일이 벌어지지 않는다... ! 



먼저 getrows 의 경우,

그리드에 표현된 그대로를 가져오는 듯 하다.

(getdisplayrows 와 차이점을 아직 느끼진 못했다.)

즉, 필터가 걸려져 있고 순서가 바뀌면

화면에 표시된 그대로를 가져온다는 말이다.


하지만, getboundrows 의 경우엔

그리드에 처음 로드되었을때의 그대로를 가져온다.

즉, filter, grouping, sorting 등에 영향을 받지 않는다는 것 !!


이점을 유의하는 것이 중요하다.



이 점을 중요하게 언급하는 이유는...

getrows 를 그대로 가져오고 그 내용을 for문으로 돌리다가

다른 데이터를 가져오는 실수를 범할 수 있기 때문 !!




예를들어,

 getrows 로 값을 가져와서 id 의 값이 1인 경우에만 

name 값을 Tom 으로 바꾸고 싶다고 가정하자.


직관적으로 코드를 짜보면,

 이렇게 될 것이다.





var rowDatas = GRD._grid.jqxGrid('getrows');

for( var i = 0 ; i < rowDatas.length ; i++ ) {

if(rowDatas[i].id == '1'){

GRD._grid.jqxGrid('setcellvalue', i, 'name' , 'Tom');

}

}



막상 이 코드를 적용해 보면 아무 이상없이

내용이 적용된 것을 확인하고

그냥 넘어가기 쉽상이다.


만약 이 내용을 그냥 넘어간다면, 아직 jqxGrid 에 대한 이해가 부족하다고 할 수 있다.



이 코드의 문제점은 바로

rowindex 와 display rowindex 를 혼동했다는 점 !


getrows 함수는 말그대로 display된 행들을 차례대로 가져온다.

따라서, for 문 안에 쓰이는 i는 결코 rowindex가 될 수 없다.

즉, 보이는 rowindex (display rowindex)라고 할 수 있다.


만약 이 그리드를 filter를 바꾸거나 sort를 바꾼다면

잘못된점을 확인할 수 있을 것이다.

엉뚱한 값을 바꾸고 있는 것이다.


setcellvalue 함수는

rowindex 를 바탕으로 값을 바꿔주는 함수이다.


따라서 이 코드가 제대로 돌아가게 하기 위해선 다음과 같아야 한다.



var rowDatas = GRD._grid.jqxGrid('getrows');

for( var i = 0 ; i < rowDatas.length ; i++ ) {

if(rowDatas[i].id == '1'){

var rowIndex = GRD._grid.jqxGrid('getrowboundindex', i);

GRD._grid.jqxGrid('setcellvalue', rowIndex , 'name' , 'Tom');

}

}




이 차이점을 기억하고,

혼동하지 않도록 해야한다 !





'Programming > Javascript' 카테고리의 다른 글

[React.js] 튜토리얼  (583) 2017.03.02
[react] reactJs 튜토리얼  (580) 2017.03.01
[nodejs] crawling test  (941) 2017.02.13
[생활코딩] nodejs tutorials  (924) 2017.01.29
[IE] frame 속 frame 디버깅   (1029) 2016.04.04
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
글 보관함