그리드에 에디터를 사용해서 데이터를 수정해야하는 경우가 있다.
그럴때에는 옵션으로
cellEdit: true
cellsubmit: 'clientArray'
추가해주면 된다.
※cellsubmit 옵션
셀 수정후 어떤 곳으로 전송을 할것인지를 결정해준다.
현재 local로 저장하고 있는 경우에는 특정 url 대신에 clientArray 로 지정해준다.
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 31 32 | var table_id = '#regCode_and_userClasCode_grid'; //서명,발행자,isbn,저자,발행년 을 던져야 함. var column=col; $(table_id).jqGrid({ datatype: "local", data:data, colModel:column, width: getScreenSize(), height: 550, rowNum: 30, shrinkToFit:false, styleUI : 'Bootstrap', cellEdit: true, cellsubmit: 'clientArray', onCellSelect: function (id) { }, ondblClickRow: function(rowid,iRow,iCol){ } }); | cs |
에디터를 사용하고 싶은 컬럼에만 editable :true 을 주고
에디터 종류에 따라edittype 옵션을 준다.
1 2 | {label:'성인자료대출여부' ,name:"USEOBJCODE" ,width:103 ,align:"center",editable :true,edittype:"select",editoptions:{value:{"Y":"Y","N":"N"}}}, | cs |
※ edittype 옵션
일반 text로 수정하고 싶을때는 특별히 주지 않아도 되고
select박스같은 경우에는
edittype:"select" 주고 select 박스 안에 그려질 데이터와 value 는
editoptions:{value:{"Y":"Y","N":"N"}} 을 이용해서 그려준다.
editoptions:{value:{"value":"text","value":"text"}}
셀 안에 특정 데이터만 입력하고싶게 하거나 알럿창을 띄우는 등에 이벤트를 주려면은
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | {label:'대출기간' ,name:"LOAN_PERIOD",width:65,align:"right",editable :true ,editoptions:{ dataInit: function(element) {userClassCode_number(element);}}}, //숫자만 입력하게 하고싶을때 //숫자만 입력 가능하게 function userClassCode_number(element){ $(element).keyup(function(){ var val1 = element.value; var num = new Number(val1); if(isNaN(num)){ element.value = ''; } }); } |
- 에디터 사용시 다른 cell을 클릭해야만 수정한 cell이 저장되고 cellEdit가 닫힌다.
그리드 밖에 포커스를 두었을때 cellEdit를 닫고싶으면
afterEditCell 옵션을 사용하면 된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | $(table_id).jqGrid({ datatype: "local", data:data, colModel:column, width: getScreenSize(), height: 550, rowNum: 30, shrinkToFit:false, styleUI : 'Bootstrap', cellEdit: true, cellsubmit: 'clientArray', onCellSelect: function (id) { }, ondblClickRow: function(rowid,iRow,iCol){ }, afterEditCell:function(rowid, cellname, value, iRow, iCol){ //qGrid에서 CellEdit 모드 일 때 마우스가 Input에서 focus를 벗어 났을 때 Cell Save $("#"+rowid+"_"+cellname).blur(function(){ $(table_id).jqGrid("saveCell",iRow,iCol); }); } }); | cs |
==> 총정리
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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 | function userClassCode_gridPrint(data,col){ var table_id = '#userClassCode_grid'; var column=col; // var column=[ // {label:'직급' ,name:"DESCRIPTION" ,width:66 ,align:"left" },// ,sorttype: "int" // {label:'성인자료대출여부' ,name:"USEOBJCODE" ,width:103 ,align:"center",editable :true,edittype:"select",editoptions:{value:{"Y":"Y","N":"N"}}}, // {label:'대출기간' ,name:"LOAN_PERIOD",width:65,align:"right",editable :true ,editoptions:{ dataInit: function(element) {userClassCode_number(element);}}}, // {label:'반납연기일수' ,name:"POSTPONEMENT_PERIOD",width:75,align:"right",editable :true,editoptions:{ dataInit: function(element) {userClassCode_number(element);}}}, // // ]; $(table_id).jqGrid({ datatype: "local", data:data, colModel:column, width: getScreenSize(), height: 550, rowNum: 30, shrinkToFit:false, styleUI : 'Bootstrap', cellEdit: true, cellsubmit: 'clientArray', onCellSelect: function (id) { }, ondblClickRow: function(rowid,iRow,iCol){ }, afterEditCell:function(rowid, cellname, value, iRow, iCol){ //qGrid에서 CellEdit 모드 일 때 마우스가 Input에서 focus를 벗어 났을 때 Cell Save $("#"+rowid+"_"+cellname).blur(function(){ $(table_id).jqGrid("saveCell",iRow,iCol); }); } }); } //숫자만 입력 가능하게 function userClassCode_number(element){ $(element).keyup(function(){ var val1 = element.value; var num = new Number(val1); if(isNaN(num)){ element.value = ''; } }); } | cs |
'개발 > jqgrid' 카테고리의 다른 글
sss (0) | 2017.05.25 |
---|---|
그리드 여러 옵션들 정리 - 수정필요 (0) | 2017.05.22 |
jqgrid 기본설정,옵션 (0) | 2016.12.22 |
★jqgrid 페이징 분리 (0) | 2016.12.14 |
★jqgrid 페이징 구현(쿼리) --> count추가 2016.12.21 (0) | 2016.12.12 |
댓글