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

그리드 컨텍스트 메뉴 + 영역선택 + 체크 박스 + formatItem 을 같이 사용할 경우 발생하는 문제 문의 > Q&A | 토론

본문 바로가기

ReactJS 그리드 컨텍스트 메뉴 + 영역선택 + 체크 박스 + formatItem 을 같이 사용할 경우 발생하는 문제 문의

페이지 정보

작성자 토끼바람 작성일 2021-08-19 12:44 조회 3,925회 댓글 0건
제품 버전 : 5.20211.794
컨트롤 이름 : FlexGrid

본문

컨텍스트 메뉴 샘플 

 (https://demo.grapecity.co.kr/wijmo/learn-wijmo/Grid/ContextMenus/react) 

영역선택 메뉴 샘플

 https://demo.grapecity.co.kr/wijmo/learn-wijmo/Grid/Selection/Overview/react

체크 박스 메뉴 샘플

https://demo.grapecity.co.kr/wijmo/learn-wijmo/Grid/Selection/CheckboxSelection/react  


이렇게 3가지의 샘플을 두고 컨텍스트 메뉴를 구현 하였는데요

컨텍스트 메뉴가 있으면 영역 선택을 하는 동작이 정상적으로 동작되지 않고 있습니다.

-------------------------

그리드 설정

--------------------------

<FlexGrid 

                    headersVisibility="All"                 // All None, Column Row


                    autoGenerateColumns={false} 

                    showSelectedHeaders={"All"}

                    anchorCursor={true} 

                    alternatingRowStep={0} 

                    

                    showMarquee={true}                      // 헤더 그룹 표시여부

                    allowPinning={"ColumnRange"}            // 컬럼 고정 방식

                    allowSorting={'MultiColumn'}            // 정렬 방식

                    

                    selectionMode="MultiRange"              // 영역 선택

                    mergeManager={new GridUserMerge()}      // 셀 병합처리

                    isReadOnly={true}                       // 읽기 전용 여부


                    columnGroups={gridColGroup}             // 그리드 포멧

                    itemsSource={gridBodyData}              // 바인딩할 데이터


                    initialized={initGrid}                  // 그리드 초기 이벤트 및 등록 처리

                    formatItem={gridFormatItem}             // 헤더 및 데이터 표시 항식

                    ref={gridObejctRef}                     // 그리드 ref 지정

                    >                    

                    <FlexGridFilter />

            </FlexGrid>

---------------------------------

그리드 초기화설정

---------------------------------

setGridObject(sender);

        // 컬럼 헤더 높이를 고정한다.

        sender.columnHeaders.rows.defaultSize = 35;


        // 체크 박스가 있는 경우 컨텍스 메뉴에서 영역선택은 되지 않는다.

        // 왜 그러지?

        new GridContextMenu(sender);

        /*

        // 체크 박스 생성

        selector = new Selector(sender, {

            itemChecked: (s, e) => {

            }

        });

        // 컬럼 체크 박스 생성

        selector.column = sender.rowHeaders.columns[0];

        */

    }

------------------------

컨텍스트 메뉴 클릭시 동작 

------------------------

executeCommand: (cmd) => {

                    let view = grid.collectionView, cols = grid.columns, col = cols[grid.selection.col], sd = view.sortDescriptions, gd = view.groupDescriptions;

                    switch (cmd) {

                        case 'ALL_RANGE':

                            grid.selection = new CellRange(0, 0, grid.rows.length-1, cols.length-1);

                            break;

                        case 'COL_RANGE':

                            grid.selection = new CellRange(0, col.index, grid.rows.length-1, cols.index);

                            break;

                        default:

                            break;

                    }

                    // restore focus to active grid cell (TFS 439964)

                    grid.refresh();

                    let sel = grid.selection, cell = grid.cells.getCellElement(sel.row, sel.col);

                    if (cell) {

                        cell.focus();

                    }

                }

-----------------------------------------

formatItem 함수

-----------------------------------------


const gridFormatItem =(sender, eventObject)=>{

        

        


        if (eventObject.panel === sender.columnHeaders) {


            eventObject.cell.innerHTML = ComUtils.UnEscapeHtml(eventObject.cell.innerHTML); //eventObject.cell.textContent;

        }


        if (eventObject.panel === sender.cells) {

            

            let col = sender.columns[eventObject.col];

            

            let eventColumnName = col.binding;

            let orgSource = sender.rows[eventObject.row].dataItem;


            

            

            if (eventColumnName && eventColumnName!=="fromSubsidiaryName" &&  eventColumnName!=="companyCode" &&  eventColumnName!=="divisionName"){

            

                

                let elValue =  orgSource[eventColumnName];

                

                if (elValue){

                    if (elValue!==-999){


                        if (elValue <90){

                            sender.setCellData(eventObject.row,eventObject.col,"rkrkrk");

                        }

                        else{

                            sender.setCellData(eventObject.row,eventObject.col,elValue);

                        }

                        

                    }

                    else{

                        sender.setCellData(eventObject.row,eventObject.col,"");

                    }

                }

                else{

                    sender.setCellData(eventObject.row,eventObject.col,"-");

                }

            }

            

            if (eventColumnName && eventColumnName.indexOf("dfrRate") > -1){

            

                

                let signalValue =  orgSource["dfrColor" + eventColumnName.replace("dfrRate", "")];

                

                if (signalValue){

                    switch(signalValue.toUpperCase()){

                        case "RED":

                            wijmo.addClass(eventObject.cell,'red-signal')

                        break;


                        case "YELLOW":

                            wijmo.addClass(eventObject.cell,'yellow-signal')

                        break;


                        case "GREEN":

                            wijmo.addClass(eventObject.cell,'green-signal')

                        break;


                        default:

                            break;


                    }    

                }


            }

        }


    }

----------------------------------------------------------------------------

1. 체크박스가 있는 상태에서 컨텍스트 메뉴로 컬럼 선택, 전체 선택등을 동작하려면 어떠한 설정이 필요한것인지

아니면 버그가 있는것인지 문의합니다.


2. formatItem 으로 설정한 경우 체크 박스가 동작되지 않습니다. 


소스에 어떤 문제가 있는것일까요?? 어떻게 처리가 가능한지 문의 합니다.


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

댓글목록

등록된 댓글이 없습니다.

1 답변

ReactJS Re: 그리드 컨텍스트 메뉴 + 영역선택 + 체크 박스 + formatItem 을 같이 사용할 경우 발생하는 문제 문의

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

페이지 정보

작성자 GCK루시 작성일 2021-08-20 18:55 댓글 2건

본문

안녕하세요 그레이프시티입니다.


문의 주신 내용과 관련하여 아쉽게도 저희 쪽에서 해당 코드로는 재현이 되지 않아 원인 파악이 어려운 상황입니다. 저희 쪽으로 재현이 가능한 샘플을 전달해 주실 수 있으실까요? 공유해주신 샘플을 바탕으로 재현 및 디버깅을 한 뒤, 문제 원인 파악 후, 도움을 드릴 수 있도록 하겠습니다. 


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


감사합니다. 

그레이프시티 드림 


* 그레이프시티(GrapeCity)는 개발자를 위하여 ComponentOne(컴포넌트원), Spread(스프레드), ActiveReports(액티브리포츠), SpreadJS(스프레드JS), Wijmo(위즈모)와 같은 엑셀 스프레드시트 리포팅 그리드와 차트 등 다양한 종류의 .NET JavaScript(자바스크립트) 컴포넌트 툴을 생산하고있는 개발툴 전문 회사 입니다.

댓글목록

토끼바람님의 댓글

토끼바람 작성일


https://demo.grapecity.co.kr/wijmo/learn-wijmo/Grid/Selection/CheckboxSelection/react
재현 가능한 샘플을 보다 사이트에 샘플로 있는 소스도 영역선택이 안되요
마우스로 드래그해서 선택이 되는게 아니라 체크박스 선택  행 선택만 되지 않나요?
샘플에서도 영역 선택이 되지 않고 있습니다. 
예를 들어 3, 3 부터 3, 6 영역을 선택하고 싶을때 선택이 안되지 않나요?
체크 박스가 있는 상태에서 영역선택이 불가능한것인지 어떻게 해야 가능한지 문의한 내용입니다.
사이트에 있는 샘플에서도 재현이 되는데 뭐가 재현이 안된다고 하시는지... 

GCK루시님의 댓글의 댓글

GCK루시 작성일

안녕하세요 그레이프시티입니다.

유선으로 안내 드린 그리드의 Wijmo selectionMode enumeration에 대한 도움말 문서도 전달 드리오니 참고 부탁 드립니다. 
https://demo.grapecity.co.kr/wijmo/api/enums/wijmo_grid.selectionmode.html

감사합니다.
그레이프시티 드림

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