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

구 버전 CustomGridEditor를 여러번 적용할 경우 핸들러 과적용으로 오류 발생 > Q&A | 토론

본문 바로가기

PureJS 구 버전 CustomGridEditor를 여러번 적용할 경우 핸들러 과적용으로 오류 발생

페이지 정보

작성자 tommy 작성일 2024-01-11 11:50 조회 72회 댓글 0건
제품 버전 : 5.20201.680
컨트롤 이름 : CustomGridEditor

본문

https://dev.mescius.co.kr/bbs/board.php?bo_table=wijmo_qna&wr_id=3130
지난 번에 알려주신 기능으로 readOnly는 잘 적용이 되었습니다.

그런데 필터/권한을 함수로 구현하고 버튼 클릭 시 적용하는 기능이 있습니다.

그래서 불가피하게 CustomGridEditor가 여러번 적용됩니다.

이 경우 핸들러가 너무 많이 생성되어 CustomGridEditor에서 오류가 발생합니다.


오류 재현은 지난 번에 알려주신 codepen 예제에서 addEditors(); 함수를 여러번 호출하면 발생합니다.


챗gpt는 dispose 기능을 구현하라고 하는데, 잘 안되어서 질문 드립니다.

아래 챗gpt가 작성한 소스코드를 참고로 첨부합니다.

if (column.format === 'd') {
            if (column.customEditor) {
                column.customEditor.dispose(); // Dispose method to be implemented in CustomGridEditor
            }
            column.customEditor = new CustomGridEditor(theGrid, column.binding, wijmo.input.InputDate, {
                format: 'd',
                isRequired: false,
                value: null
            });
        }


CustomGridEditor.prototype.dispose = function() {
        // Remove event handlers from the grid
        if (this._grid && this._handlersAdded) {
            this._grid.beginningEdit.removeHandler(this._beginningEditHandler);
            this._grid.sortingColumn.removeHandler(this._commitRowEditsHandler);
            this._grid.scrollPositionChanged.removeHandler(this._scrollPositionChangedHandler);
            this._grid.selectionChanging.removeHandler(this._selectionChangingHandler);
            this._grid.lostFocus.removeHandler(this._gridLostFocusHandler);
        }

        // Remove event handlers from the control
        if (this._ctl) {
            this._ctl.removeEventListener('keydown', this._keydownHandler, this._ctl.hostElement);
            this._ctl.lostFocus.removeHandler(this._lostFocusHandler);

            if (this._ctl.dispose) {
                this._ctl.dispose();
            }
        }

        // Remove event handler for window resize
        window.removeEventListener('resize', this._resizeHandler);

        // Clear references
        this._grid = null;
        this._col = null;
        this._ctl = null;
        this._handlersAdded = false;
    };





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

댓글목록

등록된 댓글이 없습니다.

2 답변

PureJS Re: 구 버전 CustomGridEditor를 여러번 적용할 경우 핸들러 과적용으로 오류 발생

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

페이지 정보

작성자 tommy 작성일 2024-01-11 13:58 댓글 1건

본문

첨부파일

챗gpt 통해서 어느 정도 구현은 했습니다. (파일 첨부)

공식적이고 안정적인 버전이 있다면 공유 부탁드립니다.

감사합니다.

댓글목록

MESCIUS루시님의 댓글

MESCIUS루시 작성일

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

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

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

PureJS Re: 구 버전 CustomGridEditor를 여러번 적용할 경우 핸들러 과적용으로 오류 발생

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

페이지 정보

작성자 MESCIUS루시 작성일 2024-01-15 16:13 댓글 0건

본문

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


본사 개발팀에 확인해본 결과, 기존에 예상치 못한 현상이 나타났던 원인은 여러 에디터가 특정 열에 추가되기 때문이었습니다. 


새로운 편집기 인스턴스를 열에 첨부해야 하는 경우, 이를 해결하기 위해서는 dispose와 같은 사용자 지정 메서드를 사용하는 것이 적절하며 이는 편집기 생성 전에 호출되어야 합니다. 


더불어 Wijmo의 컨트롤에서 dispose 메서드가 호출될 때 해당 컨트롤의 hostElement의 모든 이벤트가 제거되며 별도로 편집기의 컨트롤에서 핸들러를 제거하지 않아도 됩니다. 


아래 샘플을 공유드리며 샘플에서는 customEditor 속성을 사용하여 해당 열에 첨부된 사용자 지정 편집기의 인스턴스를 저장 후 필요한 객체에서 핸들러를 제거합니다.


※ Time 열에서 제한적 편집을 확인할 수 있습니다.



더불어 원활한 편집기 기능의 제공을 위해 editor 속성이 2020 v2 버전부터 추가되었으며 현재 Wijmo에서 안정적으로 제공되는 가장 최신 버전은 5.20231.904입니다. 

 

ChatGPT를 통해 작성된 코드의 경우, Wijmo에서 제공하지 않는 메서드 또는 속성이 포함된 코드가 제공될 수 있습니다. 따라서 Wijmo API 문서 및 데모를 참고하셔서, 작성된 코드가 올바른 코드인지 검토하시며 원하시는 서비스를 구현하시는 것을 권장드립니다.

 

아울러, Wijmo의 기본 기능이 아닌 추가 기능을 이용하시려는 경우, 별도의 코드를 직접 작성하여 사용자 정의해주셔야 하는 점, 업무에 참고 부탁드립니다.


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


감사합니다.

메시어스 드림

댓글목록

등록된 댓글이 없습니다.

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