셀의 값을 지정한 값으로 변경합니다.
기본적으로 이 함수를 호출해도 편집 관련 이벤트(onAfterChange,onEndEdit등)는 발생하지 않습니다.
단, 데이터가 편집 상태일 때setValue를 호출하면onEndEdit이벤트가 발생합니다.
이 경우ignoreEvent옵션을 사용하여 이벤트 발생을 방지할 수 있습니다.
값 변경 시Change이벤트 처리가 필요한 경우 OnChange 이벤트를 사용해야 합니다.
boolean setValue( row, col, val, render, ignoreEvent, noCalc );
| Name | Type | Required | Description |
|---|---|---|---|
| row | object |
필수 | 데이터 로우 객체 |
| col | string |
필수 | 열이름 |
| val | number | string |
필수 | 입력값(셀 타입에 맞는 값) |
| render | boolean |
선택 | 값 변경 시 즉시 화면에 반영할지 여부입니다. false(0)로 설정할 경우 화면에 즉시 반영되지 않으며, 작업 완료 후 rerender() 또는 상황에 따라 refreshCell, refreshRow, renderBody 등의 렌더링 함수를 호출해야 합니다.true(1): 즉시 반영 (default) |
| ignoreEvent | object | boolean |
선택 | setValue 호출 시 발생하는 이벤트를 제어하는 옵션입니다. 객체 형태로 설정할 수 있으며, 이벤트 이름을 key로 지정하고 true로 설정하면 해당 이벤트는 발생하지 않습니다. true / false로 설정할 경우 onEndEdit 이벤트만 제어합니다. |
| calc | boolean |
선택 | 포뮬러 계산 여부 해당 기능을 0(false)로 설정할 경우 setValue시 포뮬러 계산이 이뤄지지 않습니다. 포뮬러를 반영하려면 이후 반드시 calculate()를 호출해줘야 됩니다.(default:1) |
| Name | Type | Required | Description |
|---|---|---|---|
| OnChange | boolean |
선택 | setValue시 발생하는 OnChange 이벤트 발생 여부를 제어합니다. true 리턴시 해당 이벤트가 발생하지 않습니다. (default: 0(false)) |
| OnSame | boolean |
선택 | setValue시 발생하는 OnSame 이벤트 발생 여부를 제어합니다. true 리턴시 해당 이벤트가 발생하지 않습니다. (default: 0(false)) |
| onEndEdit | boolean |
선택 | 편집상태에서 setValue를 할 경우, 기본적으로 onEndEdit 이벤트가 발생합니다. 이때 발생하는 onEndEdit 이벤트의 발생 여부를 제어합니다. true를 리턴할 경우, 해당 이벤트가 발생하지 않습니다. ( default: 0(false)) |
boolean : 값의 변경 여부 (값이 변경되면 1(true), 변경되지 않으면(기존값과 동일한 경우) 0(false))
// ================================
// 데이터행 변경 예제
// ================================
// 5번째 행 가져오기 (row 객체의 id가 AR5이다.)
var r5 = sheet.getRowById("AR5");
// AR5 데이터 행의 StartDate, EndDate 값을 변경
sheet.setValue( r5, "StartDate", "20160105");
sheet.setValue({row:r5, col:"EndDate", val:"20160315"});
//OnChange, onEndEdit 발생시키지 않음
sheet.setValue({row:r5, col:"A", val:10, ignoreEvent:{onEndEdit:true,OnChange:true}});
// ================================
// 데이터행 변경 예제
// 여러 행 반복 처리
// ================================
var Rows = sheet.getDataRows(); //시트의 모든 데이터 행 추출
for(var i=0; i<Rows.length; i++){
//마감열(Name:close_data) 컬럼 값 일괄 변경
// render를 false(0)로 설정하여 화면 렌더링을 늦추면 속도가 빨라짐
sheet.setValue({row:Rows[i], col:"close_data", val:"변경", render:0});
}
// 화면에 변경 사항 적용
sheet.rerender(1);
// ================================
//헤더행 변경 예제
// ================================
var hr = sheet.getRowById("Header"); // 최상단 헤더 행 가져오기
// 특정 컬럼 헤더 텍스트 변경
sheet.setValue(hr, "SalesToday", "매출");
sheet.setValue(hr, "SalesSum", "매출");
sheet.setValue(hr, "CostToday", "비용");
sheet.setValue(hr, "CostSum", "비용");
// 헤더 텍스트 변경 후 경우에 따라 Merge 재적용(행 기준 병합)
sheet.setAutoMerge( {headerMerge:2});
// ================================
//합계행 변경 예제
// ================================
//(Col) FormulaRow 설정한 합계 컬럼은 자동 계산되므로 setValue로 직접 변경할 수 없습니다.
var sumRow = sheet.getRowById("FormulaRow"); // 합계행 가져오기
//(Col) FormulaRow가 적용되지 않은 컬럼은 변경 가능
sheet.setValue(sumRow , "Notes", "합계 참조용 메모");
| product | version | desc |
|---|---|---|
| core | 8.0.0.0 | 기능 추가 |
| core | 8.0.0.11 | ignoreOnEndEdit 추가 |
| core | 8.2.0.21 | ignoreEvent 추가, ignoreOnEndEdit deprecated 처리 |
| core | 8.3.0.45 | calc 추가 |