import React from 'react';
import 'devextreme/dist/css/dx.light.css';
import CustomStore from 'devextreme/data/custom_store';
import { createStore } from 'devextreme-aspnet-data-nojquery';
import DataGrid from 'devextreme-react/data-grid';
const serviceUrl = "https://url/to/my/service";
const store = createStore({
key: "ID",
loadUrl: serviceUrl + "/GetAction",
insertUrl: serviceUrl + "/InsertAction",
updateUrl: serviceUrl + "/UpdateAction",
deleteUrl: serviceUrl + "/DeleteAction"
});
class App extends React.Component {
render() {
return (
<DataGrid ...
dataSource={store} />
);
}
}
export default App;
Type : Store, DataSource, DataSource Configuration, String, Array
data access component
이다. const dataSource = useMemo(() => {
const apiUrl = URL;
return new CustomStore({
key: "code", // 키값
load: () => sendRequest(apiUrl, "GET"),
insert: (values) => sendRequest(apiUrl, "POST", values),
update: (key, values) => sendRequest(apiUrl, "PUT", { key, values }),
remove: (key) => sendRequest(apiUrl, "DELETE", { key }),
});
}, []);
E1042
오류가 생길 수 있으니 Store 컴포넌트를 통해서 정해주는 게 좋다.Type : boolean
Type : function
const onFocusedRowChanged = (e) => {
console.log("rows", e.row); // event로 받은 row data
reset({ // react hook form을 통해 reset
loss_no: e.row.data.Loss_No,
loss_code: e.row.data.Loss_Code,
order_no: e.row.data.Order_No,
cost: e.row.data.Cost,
reason: e.row.data.Reason,
remark: e.row.data.Remark,
});
};
<InputText
control={control}
errors={errors}
name="loss_no"
label="일련번호"
></InputText>
name
값을 찾아 DataGrid의 row data를 value
에 넣어줄 수 있다.Type : function
const [totalCount, setTotalCount] = useState(0); // State 선언
onContentReady={(e) => setTotalCount(e.component.totalCount())}
Type : String, Array
다음에는 devextream에서 제공하는 Store type과 UI Logic에 대해서 더 자세히 살펴봐야겠다.