qGrid row삭제 방법
// 선택된 row rowId를 구한다.
var selRowIds = jQuery('#grid3').jqGrid('getGridParam', 'selarrrow');
// 선택된 row의 개수를 구한다.
var selRowIdsLength = selRowIds.length;
// 선택된 row가 없다면 리턴
if(selRowIds.length == 0){
alert("삭제하실 관련 소재지 행을 선택하십시오.");
return;
}
// 선택된 row의 개수만큼 반복하면서 해당 id를 삭제한다.
for(var i=0; i<selRowIdsLength; i ++) {
$('#grid3').jqGrid('delRowData', selRowIds[0])
}
여기서 햇갈렸던 부분이
$('#grid3').jqGrid('delRowData', selRowIds[i]) 이런식으로 i번째로 루프를 돌면서 삭제 할려고 햇다 당연하게
하지만 jqGrid내부에서는 loop를 돌면서 첫번째 row가 삭제 되면 3번째 row가 2번째로, 2번째 row가 1번째로 이동된다.
그 결과 loop를 돌면서 i번째를 삭제할려고 하면 i번째는 이미 삭제되어 존재 하지 않는다.
그래서 개수만큼 0번째를 삭제하도록 해야 한다.
덧붙여 자세히 설명 하면
3개의 행을 선택했다고 하자
1번행 AA
2번행 BB
3번행 CC
라고 있다.
여기서 각각의 이름은
AA는 1번
BB는 2번
CC는 3번이다.
근데 1번이 삭제되면
BB가 1번
CC가 2번이 된다.
때문에 루프를 돌면서 해당하는 i번째의 row를 찾아서 삭제 하도록하면
전번 루프에서 row가 하나 삭제되어서 row의 아이디가 하나씩 땡겨졌기때문에 i번째로 삭제 할경우 에러가 난다.