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

columnFooters 커스텀사용 문의 > Q&A | 토론

본문 바로가기

Wijmo

Q&A | 토론

ReactJS columnFooters 커스텀사용 문의

페이지 정보

작성자 sunny 작성일 2022-03-17 16:06 조회 2,354회 댓글 0건
제품 버전 : Wijmo Library 5.20203.766
컨트롤 이름 : columnFooters

본문

안녕하세요 


그리드의 Footer 문의 드립니다.


아래 코드터럼 컬럼별 Aggregate 설정이 가능한 부분 (Sum,Cnt 등 API에 표시된 설정값들) 은 Footer에 잘표현이 되는데

설정값이외 공식을 커스텀하는게 가능한가요?


예를 들면 true 갯수 false 갯수 혹은 특정스트링값을 카운트 등등 을 표현할 방법이 있을가요?

binding={'auditorUseFlag'} <-- true인것 카운팅


<FlexGridColumnGroup binding={'checklistMandatoryFlag'} header={label('AD.CHECK.MANDATORYFLAG', '필수여부')} width={60} align={'center'} isContentHtml={true}/>
<FlexGridColumnGroup header={label('AD.CHECK.ACTTARGET', '실시대상')} width={200} align={'center'}>
<FlexGridColumnGroup binding={'auditorUseFlag'} header={label('AD.CHECK.OWN', '자사')} width={50} align={'center'} isContentHtml={true}/>
<FlexGridColumnGroup binding={'auditeeUseFlag'} header={label('AD.CHECK.PARTNER', '협력사')} width={50} align={'center'} isContentHtml={true}/>
</FlexGridColumnGroup>
<FlexGridColumnGroup aggregate="Sum" binding={'checklistItemPoint'} header={label('AD.CHECK.EVALPOINT', '배점')}


    const onGridInitialized = (grid: any) => {
       
        // create a GroupRow to show aggregates
        let row = new wjGrid.GroupRow()
        console.log(row);
        grid.columnFooters.rows.push(row);
        //flex.columnFooters.rows.push();
        grid.bottomLeftCells.setCellData(0, 0, '총계');

        setListGrid(grid);
    };

 



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

댓글목록

등록된 댓글이 없습니다.

4 답변

ReactJS Re: columnFooters 커스텀사용 문의

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

페이지 정보

작성자 GCK루시 작성일 2022-03-18 17:52 댓글 2건

본문

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


문의 주신 내용에 대해서 답변 드립니다.

일반적으로 aggregate 속성에서 기본적으로 제공하는 기능에서 더 나아가 커스터마이징을 하기 위해서는 formatItem을 사용하셔야 합니다. 아래 저희 데모 링크를 전달 드리오니 참고 부탁 드립니다.


- 사용자 정의 집계 : https://demo.grapecity.co.kr/wijmo/learn-wijmo/Grid/Aggregation/Customaggregation/purejs


위의 formatItem 사용 이외에 그리드 초기화 때, 행의 dataItem을 접근하여 특정 값을 갖고 있으며 count 하여 해당 값을 columnFooter에 설정하시는 방법도 있으며 아래 샘플을 참고하여 주시기 바랍니다.



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


감사합니다. 

그레이프시티 드림


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

댓글목록

sunny님의 댓글

sunny 작성일

안내해주신 open sandbox에서 아래와같이 

formatItem를 추가해서 작업을 하려고하는데

console.log를 찍어보면 "aaa"가 계속 찍히고있습니다. (무한루프)


컬럼 갯수가 고정이 아니라 경우에따라 변동이되어 

헤더정보를 가져오기전에 initialized를 하려고하니 opensandbox에 있는 스타일로 하면

제대로된 데이터가 찍히지 않아 formatItem.addHandler를 사용해보았습니다만

무한루프가 돌고있습니다.

#(무한루프가 돌고있어 좌측에 생성한 체크박스[new Selector]들이 체크가안되는현상이 발생)

다른 방법이나 해결책은 없을가요?


function initialized(s) {
setGrid(s);
s.rows.defaultSize = 45;
s.columnHeaders.rows.defaultSize = 65;

// create a GroupRow to show aggregates
let row = new wjGrid.GroupRow();
s.columnFooters.rows.push(row);
s.formatItem.addHandler((grid, arg) => {
var count = 0;
grid.rows.forEach((row) => {
if (row.dataItem.country === "UK") {
count += 1;
}
});
console.log("aaa");
grid.columnFooters.setCellData(0, 1, count);
});
}
---- 그리드 바인딩부분
{bindingHeaderList?.map((item: any, index: number) => {
   return (
       <FlexGridColumnGroup header={item['l'+(index+1)]} width={200} align={'center'} isContentHtml={true}>
        <FlexGridColumnGroup binding={'l'+(index+1)+'ItemNo'} header={label('AD.CHECK.GRIDNO', '번호')}  cssClass="wj-readonly" isReadOnly={true} width={50} align={'center'} isContentHtml={true}/>
        <FlexGridColumnGroup binding={'l'+(index+1)+'Title'} header={label('AD.CHECK.GRIDTITLE', '제목')}  cssClass="wj-readonly" isReadOnly={true} width={120} align={'left'} isContentHtml={true}/>
         <FlexGridColumnGroup binding={'l'+(index+1)+'Desc'} header={label('AD.CHECK.GRIDCONTENTS', '내용')}  cssClass="wj-readonly" isReadOnly={true} width={120} align={'left'} isContentHtml={true}>
         <FlexGridCellTemplate cellType="Cell" template={inputTemplate} />
         </FlexGridColumnGroup>
       </FlexGridColumnGroup>
        );
     })}

ReactJS Re: columnFooters 커스텀사용 문의

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

페이지 정보

작성자 GCK루시 작성일 2022-03-21 14:01 댓글 1건

본문

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


문의 주신 이슈의 경우, setCellData 메서드가 formatItem 내에서 호출되는 경우, 셀 값이 갱신되고 그리드가 비활성화되면서 다시 formatIem 에서 트리거되어 무한 루프 상태가 됩니다. 해당 이슈를 해결하기 위해서 아래와 같이 setCellData 메서드이 5번째 파라미터를 false로 전달하여 무효화를 중지시켜주시기 바랍니다. 

 s.columnFooters.setCellData(0, 1, count, true, false);


더불어 지속적인 이슈가 발생 시, 저희 쪽으로 바로 재현 가능한 샘플을 공유해주신다면 재현 및 디버깅 후, 문제 원인에 대해서 답변 드릴 수 있도록 하겠습니다. 

 

- setCellData : https://demo.grapecity.co.kr/wijmo/api/classes/wijmo_grid.flexgrid.html#setcelldata


도움말 문서를 같이 전달 드리며 다른 궁금한 점이 생기면, 문의 주시기 바랍니다.


감사합니다. 

그레이프시티 드림 


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


댓글목록

ReactJS Re: columnFooters 커스텀사용 문의

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

페이지 정보

작성자 sunny 작성일 2023-11-17 10:54 댓글 0건

본문

안녕하세요 ~ 

같은내용으로 오랜만에 다시 질문드립니다. 


컬럼 총계를 위 내용대로 formatItem를 사용해서 문제가 없이 잘사용되고있었는데,

데이터가 많아지고 그리드컬럼수도 많아지고 초기로딩때 안보이는 컬럼들문제인지 

사용자마다 화면 해상도가 다른문제인지  총계가 초기에 나오는유저도 있고 안나오는 유저도 있습니다.  정확한 원인은 불분명합니다만,

화면 크기를 리셋하거나 컬럼을 더블클릭하면 정삭적으로 총계부분이 재계산되어서 잘나옵니다. 


데이터로딩이 끝나고 컬럼을 더블클릭한것처럼 총계가 재계산이 되도록 리프레시 해주는 기능이 있을까요? 아니면 다른방법이 있는지 문의 드립니다. 


// create a GroupRow to show aggregates
        const row = new GroupRow();
        // 총계 footer [aggregate로 해결되는부분]
        grid.columnFooters.rows.push(row);

        // 총계 footer [aggregate가 없는 부분커스터마이징]
        grid?.formatItem.addHandler((grid: any, arg: any) => {
            //grid.beginUpdate();
            const l1Col = -1;
            let mfCol = -1;
            let aouCol = -1;
            let aeuCol = -1;
            let potCol = -1;
            if (grid.columns[arg.col].binding === 'l1ItemNo') {
                grid.columnFooters.setCellData(0, arg.col, '총계' , true, false);
            } else if (grid.columns[arg.col].binding === 'checklistMandatoryFlag') {
                mfCol = arg.col;
            }

            let mfCnt = 0;
            let aouCnt = 0;
            let aeuCnt = 0;
            let potSum = 0;

            grid.rows.forEach((row: any, idx: number) => {
                if (row.dataItem.checklistMandatoryFlag === true) {
                    mfCnt += 1;
                }
                if (row.dataItem.auditorUseFlag === true) {
                    aouCnt += 1;
                }
                if (row.dataItem.auditeeUseFlag === true) {
                    aeuCnt += 1;
                }
                if (row.dataItem.auditorUseFlag === true) {
                    if (!CommonUtils.isEmptyObject(row.dataItem.checklistItemPoint)) {
                        potSum += Number(row.dataItem.checklistItemPoint);
                    }
                }
            });
            if (l1Col != -1) grid.columnFooters.setCellData(0, l1Col, '총계' , true, false);
            if (mfCol != -1) grid.columnFooters.setCellData(0, mfCol, mfCnt, true, false);
            if (aouCol != -1) grid.columnFooters.setCellData(0, aouCol, aouCnt, true, false);
            if (aeuCol != -1) grid.columnFooters.setCellData(0, aeuCol, aeuCnt, true, false);
            if (potCol != -1) grid.columnFooters.setCellData(0, potCol, potSum, true, false);
        });

dc0328639e8141190cb8419b24e9c7a1_1700186022_9029.PNGdc0328639e8141190cb8419b24e9c7a1_1700186022_9716.PNG 

댓글목록

등록된 댓글이 없습니다.

ReactJS Re: columnFooters 커스텀사용 문의

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

페이지 정보

작성자 MESCIUS루시 작성일 2023-11-21 16:23 댓글 0건

본문

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

문의하신 내용과 관련하여 저희 쪽에서 재현이 되지 않아 정확한 원인 파악이 어려운 상황입니다. 

다만 참고용으로 Wijmo의 그리드 행이 데이터 소스의 항목과 바인딩된 후 발생하는 loadedRows 이벤트 및 그리드 새로고침과 관련되어 invalidate과 refresh 메서드가 있습니다. 아래 간단한 코드를 공유드리오니 참고 부탁드립니다. (CollectionView의 source collection을 업데이하기 위한 collecitonView의 refresh 메서드도 있습니다.)

const loadedRows = (s,e) =>{
    s.invalidate()
    s.refresh() 
  }

 <wjcGrid.FlexGrid ref={grid} loadedRows={loadedRows} initialized={initialized}  itemsSource={source} >


위의 코드 적용 이후에도 지속적으로 문제 발생 시 저희 쪽으로 재현 가능한 샘플 및 해상도 정보 등을 공유해주신다면 재현 및 디버깅 후 답변드릴 수 있도록 하겠습니다.



관련 API 문서를 공유드리며 다른 궁금한 점이 생기면 문의주시기 바랍니다.

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

댓글목록

등록된 댓글이 없습니다.

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