PureJS 구 버전 CustomGridEditor에서 row 별 readOnly 권한 적용 방법
추천0 비추천 0
페이지 정보
작성자 tommy 작성일 2024-01-02 14:09 조회 84회 댓글 1건제품 버전 : 5.20201.680
컨트롤 이름 : CustomGridEditor
본문
관련링크
지난 번에 알려주신 CustomGridEditor로 캘린더 입력 창은 잘 적용했습니다. 감사합니다.
https://dev.mescius.co.kr/bbs/board.php?bo_table=wijmo_qna&wr_id=3112
사용자 권한에 따라 특정 column에 readOnly를 부여하는 코드를 작성했고, 잘 동작합니다.
function setColumnPermissions() { // console.log('[setColumnPermissions] MY_ROLE_INFO:', MY_ROLE_INFO); let editableColumns; switch (MY_ROLE_INFO.RoleName) { case 'viewer': editableColumns = []; // No columns are editable break; case 'manager': editableColumns = null; // All columns are editable break; case 'editor': editableColumns = editorEditableColumns.concat("remark"); break; case 'marketer': editableColumns = marketerEditableColumns.concat("remark"); break; case 'producer': editableColumns = producerEditableColumns.concat("remark"); break; default: console.log('Unknown role, defaulting to read-only'); editableColumns = []; // No columns are editable } theGrid.columns.forEach(column => { column.isReadOnly = editableColumns !== null ? !editableColumns.includes(column.binding) : false; }); }
문제는 아래와 같이 그리드에 beginningEdit.addHandler로 권한 설정을 할 경우, 일반 input item은 제대로 처리가 되는데 CustomGridEditor를 적용한 경우 readOnly 처리가 되지 않습니다. CustomGridEditor 클래스에 readOnly 관련 기능을 추가해야 할 것 같은데, 잘 안되어서 질문 드립니다.
function setRowPermissions() { // console.log('[setRowPermissions] RoleName:', MY_ROLE_INFO.RoleName); theGrid.beginningEdit.addHandler((s, e) => { // Get the item (row data) that is being edited let item = s.rows[e.row].dataItem; switch (MY_ROLE_INFO.RoleName) { case 'viewer': e.cancel = true; // No editing permission break; case 'manager': e.cancel = false; // Full editing permission break; case 'editor': e.cancel = item.division_id != null && item.division_id != MY_ROLE_INFO.DivisionInfo.division_id; break; case 'marketer': const bookCategoryIds = MY_ROLE_INFO.BookcategoryInfo.map(info => info.BookCategoryID.toString()); e.cancel = !(item.book_category_id && bookCategoryIds.includes(item.book_category_id.toString())); break; case 'producer': e.cancel = false; // Full editing permission break; default: console.log('Unknown role, defaulting to no edit permission'); e.cancel = true; // No editing permission for unknown roles } }); }
확인 및 답변 부탁드립니다. 감사합니다.