! 제품 버전을 정확하게 입력해 주세요.
제품 버전이 정확하게 기재되어 있지 않은 경우,
최신 버전을 기준으로 안내 드리므로
더욱 빠르고 명확한 안내를 위해
제품 버전을 정확하게 입력해 주세요!

구 버전 CustomGridEditor에서 row 별 readOnly 권한 적용 방법 > Q&A | 토론

본문 바로가기

PureJS 구 버전 CustomGridEditor에서 row 별 readOnly 권한 적용 방법

페이지 정보

작성자 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
        }
    });
}

확인 및 답변 부탁드립니다. 감사합니다.

  • 페이스북으로 공유
  • 트위터로  공유
  • 링크 복사
  • 카카오톡으로 보내기

댓글목록

MESCIUS루시님의 댓글

MESCIUS루시 작성일

안녕하세요 메시어스입니다.

해당 문의는 확인 중에 있으며 업데이트가 되는대로 안내드리도록 하겠습니다.

감사합니다.
메시어스 드림

1 답변

PureJS Re: 구 버전 CustomGridEditor에서 row 별 readOnly 권한 적용 방법

추천1 이 글을 추천하셨습니다 비추천0 채택채택

페이지 정보

작성자 MESCIUS루시 작성일 2024-01-04 14:55 댓글 0건

본문

안녕하세요 메시어스입니다.


문의하신 기능을 구현하기 위해서는 CustomGridEditor.prototype._beginningEdit을 수정해야 합니다. 수정된 방법에서는 사용자의 조건에 따라 true 또는 false가 되는 방법을 호출하고 이 결과를 기준으로 셀 편집을 방지할 수 있습니다. 


자세한 코드는 아래 샘플에서 확인할 수 있으며 샘플에서는 isEditingAllowed 함수에서 편집 조건을 설정하고 있습니다.



다른 궁금한 점이 생기면 문의주시기 바랍니다.


감사합니다.

메시어스 드림

댓글목록

등록된 댓글이 없습니다.

메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
메시어스 홈페이지를 통해 제품에 대해서 더 자세히 알아 보세요!
홈페이지 바로가기
이메일 : sales-kor@mescius.com | 전화 : 1670-0583 | 경기도 과천시 과천대로 7길 33, 디테크타워 B동 1107호 메시어스(주) 대표자 : 허경명 | 사업자등록번호 : 123-84-00981 | 통신판매업신고번호 : 2013-경기안양-00331 ⓒ 2024 MESCIUS inc. All rights reserved.