[ React ] AG-GRID applyTransaction ํ์ถ๊ฐ(add), ํ์ญ์ (remove), ํ์์ (update) ๊ธฐ๋ฅ ๊ตฌํํ๊ธฐ
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(๋ฐ์ดํฐ์ )์ ๋ฐ์์ด ๋์ง ์๋๋ค.. ๋ฐ์ดํฐ์ ๊ณผ ์ฐ๊ฒฐ๋ ๊ฒฝ์ฐ์๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์จ์ผํ ๊ฒ ๊ฐ์ ๋๋.. ใ ใ