GRID FEATURE · PRO
셀 메모
셀 메모는 값 자체를 바꾸지 않고 검토 이유나 추가 설명을 남깁니다. 독립 셀 메모와 협업 세션의 댓글 스레드는 저장 방식과 API가 다르므로 먼저 원하는 방식을 선택합니다.
동작 원리와 선택 기준
cellNotes는 안정적으로 식별되고 읽기 권한이 있는 셀에 사용하는 Pro 기능입니다. cellNotesAdapter에 영속 저장을 연결해야 하며, 브라우저 내부 저장이나 협업 방으로 자동 대체되지 않습니다.
이 기능을 제품에서 사용하려면 Pro 패키지와 유효한 라이선스가 필요합니다. 설정 이름이 같더라도 Community에서 Pro 기능이 활성화되는 것은 아닙니다.
코드의 grid는 설치와 연결 장에서 준비한 Grid 요소입니다. 예제마다 필요한 데이터·설정을 확인하고, 코드에서 소개하는 앱 함수와 서버 주소는 프로젝트에 맞게 구현하세요.
예제 1. 독립 메모 저장소 연결
서버 연동 어댑터는 load(cell)과 save(cell,text,expectedRevision)를 구현합니다. load는 메모 또는 null, save는 GridNoteSaveResult 계약을 반환해야 합니다.
결과 확인: cellNotes를 켜기 전에 어댑터를 지정하고 getRowId를 설정합니다. 서버는 예상 revision이 일치할 때만 원자적으로 저장해 다른 사용자의 수정이 사라지지 않게 합니다.
예제 2. 협업 댓글 추가
이미 collaborationRoom에 참여한 Grid에서 기존 주문의 셀에 댓글을 남깁니다.
const commentId = await grid.addCellComment('ORD-0001', 'quantity', '수량 확인 부탁드립니다.');
if (commentId) {
await grid.openCellCommentPanel('ORD-0001', 'quantity');
}결과 확인: 활성 협업 세션이 없으면 댓글 API가 독립 메모 저장소를 대신하지 않습니다. 반환 ID가 있는지 확인하세요.
예제 3. 댓글 읽기와 해결 처리
협업 댓글 목록의 실제 ID를 사용해 스레드 상태를 바꿉니다.
const comments = await grid.getCellComments('ORD-0001', 'quantity');
console.log(comments);
// 선택한 실제 commentId를 사용해
// setCellCommentResolved(rowId, field, commentId, true)를 호출합니다.결과 확인: 메모 삭제·댓글 해결·원본 셀 값 변경은 각각 다른 작업입니다. 읽기 권한이 없는 셀의 메모를 앱에서 따로 노출하지 않도록 처리합니다.
조합할 때와 문제를 해결할 때
행 인덱스는 정렬·필터 후 바뀔 수 있으므로 메모 저장 키로 사용하지 마세요. 안정적인 rowId와 열 식별자를 사용합니다.
저장 충돌을 단순 재시도로 덮어쓰지 마세요. 서버의 최신 revision을 읽고 사용자가 내용을 비교하게 합니다.
함께 읽기
- 행·열·ID의 관계
- 결과와 이벤트 연결
- Features에서 살펴보기
직접 체험 가능한 범위는 해당 가이드에 안내되어 있습니다.