[]
사용자가 데이터를 변경하거나 기존 스타일을 수정하기 위해 API를 호출할 때마다 CellChanged 이벤트가 발생합니다. 이 이벤트가 짧은 시간 안에 반복적으로 발생하면, 상당한 오버헤드가 발생하여 전체 성능에 부정적인 영향을 줄 수 있습니다.
따라서 많은 변경 사항을 한 번에 적용하되 Spread의 이벤트가 발생하지 않도록 하고 싶을 경우에는 suspendEvent 메서드와 resumeEvent 메서드를 사용하는 것이 권장됩니다.
suspendEvent 메서드는 모든 변경 작업이 완료될 때까지 이벤트 처리를 중단하고, resumeEvent 메서드는 이벤트 처리를 다시 활성화합니다. 이 두 메서드는 SpreadJS에서 이벤트를 다룰 때 성능을 향상시키는 데 유용합니다.
다음은 SpreadJS 작업 중 성능을 향상시키기 위해 suspendEvent 및 resumeEvent 메서드를 사용하는 코드 예제입니다.
var spread = new GC.Spread.Sheets.Workbook(document.getElementById("ss"));
var sheet = spread.getActiveSheet();
spread.bind(GC.Spread.Sheets.Events.CellChanged, function (sender, args) {
console.log('CellChanged event fired for Cell[' + args.row + "," + args.col + "] having value " + sheet.getValue(args.row, args.col));
});
spread.suspendPaint();
spread.suspendEvent();
for (var i = 0; i < 20; i++)
{
for (var j = 0; j < 10; j++)
{
sheet.setValue(i, j, "111");
}
}
spread.resumeEvent();
spread.resumePaint();
/* CellChanged 이벤트는 Cell[22, 2]에 대해서만 발생
이는 Cell[22, 2]의 값이 suspendEvent()와 resumeEvent() 메서드의 범위 밖에서 설정되었기 때문입니다. */
sheet.setValue(22, 2, "222");