250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 제이쿼리그리드
- MessageQueue
- sqlserver
- 자동배포
- 스트림
- Stream
- ORM
- poi
- apache.poi
- jqGrid
- 그리드
- mssql
- Jenkins
- mom
- 자바8
- rabbitmq
- ci/cd
- java
- 자동빌드
- 엑셀 업로드
- spring
- QueryDSL
- Javascript
- docker
- 대용량 업로드
- JPA
- JQuery
- 보안
- stream api
- DevOps
Archives
- Today
- Total
개발 메모장
[jQuery] jqGrid 셀 수정 본문
728x90
#. 그리드 내에서 셀을 수정하고 수정 값을 DB에 저장하는 기능을 추가한 내용에 대해 포스팅해보도록 하겠습니다.
#. 간략한 기능으론 수정할 셀을 클릭하면 멀티셀렉트가 처리되지 않게 하였습니다.
#. 셀을 수정하면 배경색을 변경하였고, 기존 값과 동일할 시 다시 배경색을 제거하였습니다.
#. 수정 시 적용이 아닌 멀티셀렉트를 이용해 수정한 셀을 지정하여 일괄 수정할 수 있도록 하였습니다.
- 우선 jqGrid를 작성하도록 하겠습니다.
- 필요한 옵션에 대한 설명은 아래 작성토록 하겠습니다.
$('#grid').jqGrid({
url: 'test.do'
,datatype: 'local'
,colNames: [
'수정'
]
,colModel: [{name:'test', editable:true,
editrules:{number:true, custom:true, custom_func:function(value, colname) {
if(isNaN(value || value < 0)) {
return [false, '해당 셀은 0 또는 양수만 입력 가능합니다.']
}
return [true,'']
}}]
, cellEdit: true
, cellsubmit: 'clientArray'
, afterSaveCell: function(rowId, cellName, value, iRow, iCol) {
var initValue = initValues[rowId][cellName];
if(value !== initValue) {
$('#' + rowId + ' td:eq(' + iCol + ')').addClass('edited-cell')
} else {
$('#' + rowId + ' td:eq(' + iCol + ')').removeClass('edited-cell')
}
}
,onCellSelect: function(rowid, iCol, cellcontent, e) {
var grid = $(this);
var cm = grid.jqGrid('getGridParam', 'colModel');
var colName = cm[iCol].name;
var checkEditableCell = cm[iCol].editable === true;
grid.jqGrid('setSelection', rowid)
if(!checkEditableCell) {
return;
}
if(colName === 'test') {
grid.jqGrid('setSelection', rowid);
return
}
}
})
#. 위 내용을 살펴보면 아래와 같습니다.
- editable
- true 설정 시 수정 기능을 가능하게 합니다.
- editrules
- 기본적으로 제공하는 룰을 적용할 수 있습니다.
- 또한 커스텀 기능이 있어 사용자가 알맞게 처리 가능합니다. - cellEdit
- jqGrid 옵션으로 true로 설정하여 수정가능토록 해야합니다. - cellsubmit
- 셀 수정 후 처리 방법을 선택할 수 있습니다. - clientArray
- 데이터를 서버로 즉시 전송하지 않고 로컬에서 업데이트만 처리한 뒤 별도로 서버에 보내주는 방법을 구현하여 전송하는 방식으로 일괄처리할 때 사용합니다.
#. remote
- 셀 변경 시 즉시 서버에 전송하는 방식으로 cellurl 옵션을 추가하여 uri를 작성해 해당 메서드로 데이터를 AJAX요청으로 보내 처리하는 방법입니다.
#. afterSaveCell
- 셀을 수정한 뒤 실행하는 이벤트 옵션으로 초기값을 initValue에 저장하고 이 값이 수정한 값과 다르면 css를 적용한 edited-cell을 추가하고 아니면 제거하도록 하였습니다.
- onCellSelect
- 셀을 선택했을 때의 이벤트입니다.
- 이 부분에선 수정가능한 셀을 클릭했을 땐 선택되지 않고 나머지 셀을 클릭해야만 선택되도록 하였습니다.
728x90
#. 셀 수정은 생각보다 간단했습니다.
#. 한 건 씩 바로바로 처리해야하는 경우엔 clientArray 대신 remote를 사용하고 editurl을 작성하여 즉시 통신하도록 하면 됩니다.
======================================
틀린 내용이 있거나 이견 있으시면 언제든 가감 없이 말씀 부탁드립니다!
======================================
728x90
'Java Script' 카테고리의 다른 글
[jQuery] jqGrid rowspan 셀 병합 (0) | 2024.06.25 |
---|---|
[jQuery] jqGrid GroupHeader 처리 (0) | 2024.05.14 |
[JavaScript] await, async, fetch를 이용한 동기 처리 (0) | 2024.03.05 |
[jQuery] jqGrid footer 처리 (1) | 2024.01.02 |
[jQuery] jqGrid 사용방법(Event 및 메서드 처리)(2/2) (0) | 2023.12.29 |