Programming/React

[ React ] AG-GRID applyTransaction ํ–‰์ถ”๊ฐ€(add), ํ–‰์‚ญ์ œ(remove), ํ–‰์ˆ˜์ •(update) ๊ธฐ๋Šฅ ๊ตฌํ˜„ํ•˜๊ธฐ

seulye 2022. 7. 15. 17:05

AG-GRID๋ฅผ ์ด์šฉํ•ด์„œ ๊ทธ๋ฆฌ๋“œ ํ–‰์ถ”๊ฐ€, ํ–‰์‚ญ์ œ, ํ–‰์ˆ˜์ • ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๋ ค๊ณ  ํ–ˆ๋‹ค.

๊ฒ€์ƒ‰์„ ํ•ด๋ณด๋‹ˆ๊นŒ ์ƒ๊ฐ๋ณด๋‹ค ์ž˜ ๋‚˜์™€์žˆ์ง€ ์•Š์•„์„œ ํฌ์ŠคํŒ…ํ•ด๋ณธ๋‹ค. 

 

 

 

import { GridApi } from 'ag-grid-community'

 

์ผ๋‹จ GridApi๋ฅผ import ํ•ด์ฃผ์—ˆ๋‹ค. 

 

 

์›ํ•˜๋Š” applyTransaction ์ด ์—†๋‹ค..

๋„๋Œ€์ฒด ์ด๊ฑด ์–ด๋–ป๊ฒŒ ์“ฐ๋Š” ๊ฑด๊ฐ€ ํ•˜๊ณ  ์†Œ์Šค๋ฅผ ๋’ค์ ธ๋ณด์•˜๋‹ค.

 

const [gridApi, setGridApi] = useState<GridApi>();

useState๋กœ ์‚ฌ์šฉ์„ ํ•˜๋”๋ผ.. 

 

 

โž•ํ–‰ ์ถ”๊ฐ€ (add) 

const newRow = {
            JobNm: '',
            FromTm: '',
            ToTm: '',
            Use_YN: 'Y',
            Remark: ''
        };
        gridApi?.applyTransaction({ add: [newRow] });

 

์ถ”๊ฐ€ํ•˜๊ณ ์ž ํ•˜๋Š” row๋ฅผ ์„ค์ •ํ•œ ํ›„์—, add ๋’ค์— ์ ์œผ๋ฉด ๋œ๋‹ค.

 

 

โž– ํ–‰ ์‚ญ์ œ (remove)

    const listDel = async () => {
        const selectedData = gridApi?.getSelectedRows();
        gridApi?.applyTransaction({ remove: selectedData });
    };

delete๋Š” ์„ ํƒ๋œ row๋ฅผ ์ง€์šฐ๊ณ ์ž ํ–ˆ๊ธฐ ๋•Œ๋ฌธ์—, getSelectedRows๋ฅผ ๋จผ์ € ์“ด ํ›„์—

๊ทธ row๋ฅผ remove!

 

 

๐Ÿ”˜ ํ–‰ ์ˆ˜์ • (update)

    () => {
        const selectedData: any = gridApi?.getSelectedRows();
        const temp = [];
        for (let i = 0; i < selectedData.length; i += 1) {
            selectedData[i].rowType = 'D';
            temp.push(selectedData[i]);
            gridApi?.applyTransaction({ update: temp });
        }
    };

ag-grid์˜ ์˜ˆ์ œ์™€๋Š” ์กฐ๊ธˆ ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค. ๋‚˜๋Š” ์„ ํƒ๋œ ํ–‰์— ๋Œ€ํ•ด์„œ๋งŒ update ๋˜๊ธธ ์›ํ•ด์„œ,

getSelectedRows๋ฅผ ์‚ฌ์šฉํ–ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํ•ด๋‹น row์˜ rowType(์ƒํƒœ๊ฐ’)์„ D๋กœ ๋ณ€๊ฒฝํ•œ ํ›„์— temp์— push.

 

์ฒ˜์Œ์—๋Š” update: selectedData[i] ๋ผ๊ณ  ์จ๋ดค๋Š”๋ฐ, ์œ ์‚ฌ๋ฐฐ์—ด ์˜ค๋ฅ˜๊ฐ€ ๋‚˜์„œ

temp๋ฅผ ์„ ์–ธํ•ด์ฃผ๊ณ  push๋ฅผ ํ–ˆ๋”๋‹ˆ๋งŒ ๋๋‹ค. 

 

 

 

์ฐธ๊ณ  : https://www.ag-grid.com/javascript-data-grid/data-update-transactions/

 

JavaScript Data Grid: Client-Side Data - Transaction Updates

Transaction Updates allow large numbers of rows in the grid to be added, removed or updated in an efficient manner. Download v28 of the best JavaScript Data Grid in the world now.

www.ag-grid.com

 

 

๐Ÿคฃ add๋ฅผ ํ–ˆ๋Š”๋ฐ, rowData(๋ฐ์ดํ„ฐ์…‹)์— ๋ฐ˜์˜์ด ๋˜์ง€ ์•Š๋Š”๋‹ค.. ๋ฐ์ดํ„ฐ์…‹๊ณผ ์—ฐ๊ฒฐ๋œ ๊ฒฝ์šฐ์—๋Š” ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์จ์•ผํ•  ๊ฒƒ ๊ฐ™์€ ๋А๋‚Œ.. ใ… ใ