์ด์
https://yejinrla.tistory.com/90
[ React ] ๊ทธ๋ฆฌ๋ ํน์ ์ ๋๋กญ๋ฐ์ค๋ก ๋ณํ + ๋ณด์ฌ์ง๋ ๊ฑด ๋ค๋ฅด๊ฒ ํ๊ธฐ (ag-grid cellEditorSelector, valueForm
๊ทธ๋ฆฌ๋ ํน์ ์ ์ ์ด๋ ๊ฒ ๋๋กญ๋ฐ์ค๋ก ๋ณํ์์ผ ์ ํํ ์ ์๊ฒ ๋ง๋๋ ๋ฐฉ๋ฒ! https://www.ag-grid.com/react-data-grid/cell-editors/ React Data Grid: Cell Editors A Cell Editor Component is the UI that ap..
yejinrla.tistory.com
์ด ๊ธ์ ์ผ์๋๋ฐ ์ ๊ธ์ ๋จ๊ฒผ๋ฏ์ด ๋ฌธ์ ์ ์ด ์์๋ค.
์ด๋ป๊ฒ๋ ํด๋ด๊ณ ์ถ์ด์ ๊ณ์ ์ฐพ๋ค๊ฐ ๊ฒฐ๊ตญ ํด๋.
https://www.ag-grid.com/javascript-data-grid/cell-editors/
JavaScript Data Grid: Cell Editors
A Cell Editor Component is the UI that appears, normally inside the Cell, that takes care of the Edit operation. Download v28 of the best JavaScript Data Grid in the world now.
www.ag-grid.com
์ด๊ฑฐ ์ฐธ๊ณ ํ๋ค. ์ด์ ๊บผ๋ react-data-grid ๋ฌธ์์๋๋ฐ ์ค๋๊ป javascript-data-grid๋ค.
1. ํน์ ์ด ๋ชจ๋ select box ์ฌ์ฉํ ๋
์ด์ ๋ cellEditorSelector๋ฅผ ์ฌ์ฉํ๋๋ฐ ์ค๋์ cellEditor์ ์ฌ์ฉํด๋ดค๋ค.
const columnDefs = [
{
headerName: '๊ฐ',
field: 'value',
cellStyle: { textAlign: 'left' },
editable: true,
cellEditor: 'agRichSelectCellEditor',
cellEditorPopup: true,
cellEditorParams: cellCellEditorParams
}
]
cellCellEditorParams์ ์กฐ๊ฑด์์ ๊ฑธ์ด์ค๋ค.
const arrTypeList = [
{ value: 'Finite', display: '์ ํ' },
{ value: 'Infinite', display: '๋ฌดํ' }
];
const cellCellEditorParams = (params: { data: { setting: string } }) => {
if (params.data.setting === 'type') {
return {
values: ['Finite', 'Infinite'],
formatValue: (value: any) => `${arrTypeList?.find((element) => element.value === value)?.display}`
};
}
return undefined;
};
์ ๋ ๋ฐ์ค๋ ์ด๋ ๊ฒ ๋จ๊ณ , ์ ํ์ ์ ํํ๋ฉด
์๋์ value๋ก ๋ณด์ธ๋ค. ๋ณด์ฌ์ง๋ value๊น์ง ์ปจํธ๋กคํ๋ ค๋ฉด valueFormatter์ ์ฐ๋ฉด ๋ ๊ฒ ๊ฐ๋ค.
โป ๋ฌธ์ ์
ํด๋น ์ปฌ๋ผ ๋ชจ๋ ๊ฐ์ด ๋๋กญ๋ค์ด์ผ๋ก ๋์ด์ผ ํจ..
๊ทธ๋์ ๋ค์ ์๋๋ฅผ ํด๋ณด์์ต๋๋ค.
2. ํน์ ์ด ์ค์์ ํน์ ํ์ ์ ๋ง select box ์ฌ์ฉํ ๋
ag grid ๋ฌธ์์ ๋ฐ๋ฅด๋ฉด, ์ด ๊ฒฝ์ฐ์๋ celleditorselector์ ์ฐ๋ ๊ฑฐ๋ผ๊ณ ํ๋ค.
celleditorselector ์ฐ๋ฉด์ ์ด๋ป๊ฒ formatValue๋ฅผ ์ธ ์ ์์๊น.. ๊ณ ๋ฏผํ๋ค๊ฐ
์ฌ๊ธฐ์ ํํธ๋ฅผ ์ป์๋ค.
values: ['Finite', 'Infinite'],
formatValue: (value: any) => `${arrTypeList?.find((element) => element.value === value)?.display}`
cellEditorParams์ ์ผ๋ ์ด ๋ถ๋ถ์ params์ ์จ๋ณธ๋ค๋ฉด.. ?
const arrTypeList = [
{ value: 'Finite', display: '์ ํ' },
{ value: 'Infinite', display: '๋ฌดํ' }
];
const cellEditorSelector = (params: { data: { setting: string } }) => {
if (params.data.setting === 'type') {
return {
component: 'agRichSelectCellEditor',
popup: true,
params: {
values: ['Finite', 'Infinite'],
formatValue: (value: any) => `${arrTypeList?.find((element) => element.value === value)?.display} `
}
};
}
const columnDefs = [
{
headerName: '๊ฐ',
field: 'value',
cellStyle: { textAlign: 'left' },
editable: true,
cellEditorSelector
}
];
1๋ฒ์์ ์ ์ฉ๋๋ ๊ฒ์ฒ๋ผ ์ ์ฉ์ด ๋๋ค..!
+ ์์ฉ
params: {
values: list?.map((row) => row.value),
formatValue: (value: any) => `${list?.find((element) => element.value === value)?.display} `
}
์์ arrTypeList ์ฒ๋ผ value์ display key๋ก ์ด๋ฃจ์ด์ง object๋ฅผ list๋ผ๊ณ ํด๋ณด์.
values์๋ value key ์ธ ๊ฒ ๋ง ๋ณด์ฌ์ง๊ฒ ํ๊ณ , formatValue์๋ ํด๋น value์ ๋ํ display๊ฐ ๋ณด์ฌ์ง๊ฒ ํ๋ฉด
๋ ๊ณ ๊ธ์ง(?) ์ฝ๋ฉ์ ํ ์ ์๋ค.