-
jQgrid 자주사용하는 모음들 정리 afterEditCell,afterSaveCell 응용자바웹프로그래밍/jQuery 2021. 1. 5. 11:23728x90반응형
*광고 클릭은 제게 큰 힘이됩니다!
1.afterEditCell
jQGrid를 사용하다보면 Edit관련된 작업을 많이 할것이다.
하지만, Jqgrid는 오픈소스에 걸맞게 Edit버그도 많고 사용하기도 어렵다
그중에 afterEditCell 은 cell을 수정하고나서 발생하는 이벤트이다.
여러가지 용도로 많이 사용하지만, cell이 edit모드 즉, 열려있는 상태에서 저장을하거나 getRowData() 를 하면 로우에 input태그가 들어가는 경우가 있다. 이유는 jqgrid는 edit을할때 그요소부문이 input으로 변환되고 그 input이 닫히지 않았기에 input태그내용이 들어가는것이다.
그래서 이러한 애로사항을 제거하기위해
afterEditCell:function(rowid, cellname, value, iRow, iCol){ $("#" + rowid + "_" + cellname).blur(function(e){ $("#"+id).jqGrid("saveCell",iRow,iCol); }); },
위처럼 blur를 사용하여 cell을 닫아준다. blur는 해당 element에서 포커스를 벗어나면 발생시키는 이벤트이며, saveCell을 통해 cell을 저장한다.
2.afterSaveCell
afeerSaveCell은 저장후에 발동하는 이벤트이다. jqgrid는 셀이 변경되면 getChangedCells 로 변경된 cell을 알수지만.
local데이터를 사용하면 여러가지 이슈등에 의해 getChangedCells로 정확하게 변경된 cell을 알아내기 어려울수 있다.
그럴때 사용하는 방법은 afterSaveCell을 이용하는것으로 아래와 같이
afterSaveCell: function (rowid, name, val, iRow, iCol) { if ($("#"+id).jqGrid('getRowData', rowid, "statusV") !== "U" && $("#"+id).getRowData(rowid).statusV!=="I" ) { $("#"+id).jqGrid('setRowData', rowid, { statusV: "U" }); } },
rowData를 가져와 미리 row에 statusV라는 컬럼을 넣어 edit이 이루어지면 statusV를 "U" 로 변경시켜
나중에 서버에 db에 update할때 statusV가 "U"인것만 가져와서 저장해주면 쉽게 update를 구현할수있다.
728x90반응형'자바웹프로그래밍 > jQuery' 카테고리의 다른 글
jqgrid editcell 중 cell을 doubleclick 할 경우 input박스가 저장될경우 해결방안 (0) 2021.01.06 JqGrid "setCell"을 통해 validate check후 grid 테두리 색깔주기 (0) 2021.01.04