Programming/TypeScript

[20230117 TIL] AG-GRID ์›ํ•˜๋Š” ๊ทธ๋ฆฌ๋“œ ํ–‰ ์„ ํƒ๋˜๊ฒŒ ํ•˜๊ธฐ (setSelected)

seulye 2023. 1. 18. 09:08

* ๊ตฌ์กฐ

ํ™”๋ฉด์— 2๊ฐœ์˜ ๊ทธ๋ฆฌ๋“œ๊ฐ€ ์กด์žฌ. ์™ผ์ชฝ ๊ทธ๋ฆฌ๋“œ ํ–‰์„ ํด๋ฆญํ•˜๋ฉด ์ƒ์„ธ ์ •๋ณด๊ฐ€ ์˜ค๋ฅธ์ชฝ ๊ทธ๋ฆฌ๋“œ์— ๋œธ.

 

* ๋งŒ๋“ค๊ณ ์ž ํ–ˆ๋˜ ๊ธฐ๋Šฅ

์™ผ์ชฝ ๊ทธ๋ฆฌ๋“œ ํ–‰์„ ํด๋ฆญํ•œ ํ›„ ์ƒ์„ธ ์ •๋ณด๋ฅผ ์ˆ˜์ •์ค‘์— ์™ผ์ชฝ ๊ทธ๋ฆฌ๋“œ ๋‹ค๋ฅธ ํ–‰์„ ํด๋ฆญํ•  ๋•Œ '์ž‘์„ฑ์ค‘์ž…๋‹ˆ๋‹ค. ์ €์žฅํ•˜์ง€ ์•Š๊ณ  ์กฐํšŒ ์ง„ํ–‰ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?' alert ์ฐฝ์ด ๋œฐ ์ˆ˜ ์žˆ๊ฒŒ ํ•˜๊ณ , ํ™•์ธ์„ ๋ˆ„๋ฅด๋ฉด ์กฐํšŒ๋ฅผ ์ง„ํ–‰ / ์ทจ์†Œ๋ฅผ ๋ˆ„๋ฅด๋ฉด ํ˜„์ƒํƒœ๋ฅผ ์œ ์ง€์‹œํ‚ค๋ ค๊ณ  ํ–ˆ๋‹ค.(return)

 

* ๋ฌธ์ œ ๋ฐœ์ƒ

return์„ ์‹œ์ผœ๋„, ๋‹ค๋ฅธ ํ–‰์„ ํด๋ฆญํ–ˆ๋˜๊ฒŒ ๊ณ„์† ๋‚จ์•„์žˆ์—ˆ๋‹ค. ์™ผ์ชฝ ๊ทธ๋ฆฌ๋“œ์—์„œ ํด๋ฆญ๋œ ํ–‰๊ณผ ์˜ค๋ฅธ์ชฝ ๊ทธ๋ฆฌ๋“œ์˜ ์ƒ์„ธ์ •๋ณด๊ฐ€ ์„œ๋กœ ๋งž์ง€ ์•Š๊ฒŒ ๋œ ๊ฒƒ.

 

* ํ•ด๊ฒฐ ๋ฐฉ์•ˆ

๊ฐ•์ œ๋กœ ๋‹ค์‹œ ๊ธฐ์กด ํ–‰์„ ํด๋ฆญํ•˜๋„๋ก ๋งŒ๋“ค๊ธฐ๋กœ ํ–ˆ๋‹ค. ์ด๋•Œ setSelected ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค. 

forEachNode๋Š” ๋ชจ๋“  ๋…ธ๋“œ๋ฅผ ๋‹ค ๋ณด๋Š”๋ฐ (map๊ฐ™์€ ๋А๋‚Œ์ธ๋“ฏ ์‹ถ๋‹ค)

๊ทธ ๋…ธ๋“œ๋“ค ์ค‘์— ์˜ค๋ฅธ์ชฝ ๊ทธ๋ฆฌ๋“œ์˜ ์ƒ์„ธ์ •๋ณด name๊ณผ ๊ฐ™์€ ๋…ธ๋“œ๋ฅผ ์ฐพ์•„ ์„ ํƒ์„ ์‹œ์ผœ์ฃผ๋Š” ๊ฒƒ์ด๋‹ค. 

 

const setSelectedRows = (name: any) => {
        gridRef?.current?.api.forEachNode((node: any) => {
            node.setSelected(node.data.cdNm === name);
        });
    };

/* ๊ทธ๋ฆฌ๋“œ ํ–‰ ํด๋ฆญ */
const onCellClicked = async (params: any) => {
        const name = detailList.find((el) => el.setting === 'name')?.value;
        // ์ž‘์„ฑ ์ค‘ ์กฐํšŒ ๋ฒ„ํŠผ ๋ˆ„๋ฅด๋ฉด ์•Œ๋ฆผ ํŒ์—…
        if (isChanged) {
            if (params[0]?.cdNm !== name) {
                const bConfirmed = await openConfirm('์ž‘์„ฑ์ค‘์ž…๋‹ˆ๋‹ค.\n์ €์žฅํ•˜์ง€ ์•Š๊ณ  ์กฐํšŒ ์ง„ํ–‰ํ•˜์‹œ๊ฒ ์Šต๋‹ˆ๊นŒ?');
                if (!bConfirmed) {
                    setSelectedRows(name);
                    return;
                }
            } else return;
        }
        <์ƒ๋žต>
  }