import React from 'react';
import { Input, Col, InputNumber, Button, Select ,Form} from 'antd';
import EditTable from '@antdp/edit-table';
import 'antd/dist/reset.css';
const originData = [];
for (let i = 0; i < 5; i++) {
originData.push({
key: i.toString(),
name: `Edrward ${i}`,
age: 32,
address: `London Park no. ${i}`,
});
}
const EditableTable =() => {
const [data, setData] = React.useState(originData);
const [tableProps, setTableProps] = React.useState({
isAdd: true,
isOpt: true,
optIsFirst: false,
});
const columns = [
{
title: 'name',
dataIndex: 'name',
width: '20%',
editable: true,
type: 'Input',
},
{
title: 'age',
dataIndex: 'age',
width: '15%',
editable: true,
type: 'Custom',
rules: [{ required: true, message: '请输入' }],
inputNode: <InputNumber />,
},
{
title: 'isList',
dataIndex: 'list',
width: '15%',
editable: true,
type: 'Custom',
isList: true,
render: (text) => {
return (
text &&
(text || [])
.filter((it) => it)
.map((ite) => ite.first)
.join(',')
);
},
inputNode: (fields, { add, remove }, { errors }) => (
<>
{fields.map(({ key, name, fieldKey, ...restField }, index) => (
<div style={{marginBottom:10}} >
<EditTable.Item
key={key}
{...restField}
name={[name, 'first']}
fieldKey={[fieldKey, 'first']}
rules={[
{
required: true,
whitespace: true,
message: 'Missing first name',
},
]}
>
<Input placeholder="First Name" />
</EditTable.Item>
</div>
))}
<Form.Item>
<Button type="dashed" onClick={() => add()}>
Add field
</Button>
<Form.ErrorList errors={errors} />
</Form.Item>
</>
),
},
{
title: 'address',
dataIndex: 'address',
width: '30%',
editable: true,
type: 'Input',
},
];
return (
<div>
<EditTable
initValue={{ address: 2193 }}
onValuesChange={(list) => setData(list)}
rowKey="key"
dataSource={data}
columns={columns}
onSave={(list) => setData(list)}
{...tableProps}
/>
</div>
);
};
export default EditableTable
import React from 'react';
import { Input, Col, InputNumber, Button, Select ,Form} from 'antd';
import EditTable from '@antdp/edit-table';
import 'antd/dist/reset.css';
const originData = [];
for (let i = 0; i < 5; i++) {
originData.push({
key: i.toString(),
name: `Edrward ${i}`,
age: 32,
// address: `London Park no. ${i}`,
});
}
const EditableTable =() => {
const [data, setData] = React.useState(originData);
const [tableProps, setTableProps] = React.useState({
isAdd: true,
isOpt: true,
optIsFirst: true,
});
const columns = [
{
title: 'name',
dataIndex: 'name',
width: '20%',
editable: true,
type: 'Custom',
inputNode: (edit) => {
return <Input {...edit} />;
},
},
{
title: 'age',
dataIndex: 'age',
width: '15%',
editable: true,
type: 'Input',
// rules: [{ required: true, message: '请输入' }],
inputNode: (edit) => {
return <Input {...edit} />;
},
},
{
title: 'address',
dataIndex: 'address',
width: '30%',
editable: true,
type: 'Input',
},
];
return (
<div>
<EditTable
initValue={{ address: 2193 }}
onValuesChange={(list) => setData(list)}
rowKey="key"
optIsFirst={true}
dataSource={data}
columns={columns}
onSave={(list) => setData(list)}
isAdd={true}
{...tableProps}
/>
</div>
);
};
export default EditableTable
import React from 'react';
import { Input, Col, InputNumber, Button, Select ,Form} from 'antd';
import EditTable from '@antdp/edit-table';
import 'antd/dist/reset.css';
const originData = [];
for (let i = 0; i < 5; i++) {
originData.push({
key: i.toString(),
name: `Edrward ${i}`,
age: 32,
// address: `London Park no. ${i}`,
});
}
const EditableTable =() => {
const [data, setData] = React.useState(originData);
const [tableProps, setTableProps] = React.useState({
isAdd: true,
isOpt: true,
isOptDelete:true,
optIsFirst: false,
});
const columns = [
{
title: 'name',
dataIndex: 'name',
width: '20%',
editable: true,
type: 'Custom',
inputNode: (edit) => {
return <Input {...edit} />;
},
},
{
title: 'age',
dataIndex: 'age',
width: '15%',
editable: true,
type: 'Custom',
rules: [{ required: true, message: '请输入' }],
inputNode: (edit) => {
return <Input {...edit} />;
},
},
{
title: 'address',
dataIndex: 'address',
width: '30%',
editable: true,
type: 'Input',
},
];
return (
<div>
<EditTable
initValue={{ address: 2193}}
onValuesChange={(list) => setData(list)}
rowKey="key"
dataSource={data}
columns={columns}
onSave={(list) => setData(list)}
isAdd={true}
{...tableProps}
/>
</div>
);
};
export default EditableTable
import React from 'react';
import { Input, Col, InputNumber, Button, Select ,Form} from 'antd';
import EditTable from '@antdp/edit-table';
import 'antd/dist/reset.css';
const originData = [];
for (let i = 0; i < 5; i++) {
originData.push({
key: i.toString(),
name: `Edrward ${i}`,
age: 32,
// address: `London Park no. ${i}`,
});
}
const EditableTable =() => {
const [data, setData] = React.useState(originData);
const [tableProps, setTableProps] = React.useState({
isAdd: true,
isOpt: true,
isOptDelete:true,
optIsFirst: false,
multiple:true
});
const columns = [
{
title: 'name',
dataIndex: 'name',
width: '20%',
editable: true,
type: 'Custom',
inputNode: (edit) => {
return <Input {...edit} />;
},
},
{
title: 'age',
dataIndex: 'age',
width: '15%',
editable: true,
type: 'Custom',
rules: [{ required: true, message: '请输入' }],
inputNode: (edit) => {
return <Input {...edit} />;
},
},
{
title: 'address',
dataIndex: 'address',
width: '30%',
editable: true,
type: 'Input',
},
];
return (
<div>
<EditTable
initValue={{ address: 2193}}
onValuesChange={(list) => setData(list)}
rowKey="key"
dataSource={data}
columns={columns}
onSave={(list) => setData(list)}
isAdd={true}
{...tableProps}
/>
</div>
);
};
export default EditableTable
import React from 'react';
import { Input, Col, InputNumber, Button, Select ,Form} from 'antd';
import EditTable from '@antdp/edit-table';
import 'antd/dist/reset.css';
const originData = [];
for (let i = 0; i < 5; i++) {
originData.push({
key: i.toString(),
name: `Edrward ${i}`,
age: 32,
// address: `London Park no. ${i}`,
});
}
const EditableTable =() => {
const [data, setData] = React.useState(originData);
const [tableProps, setTableProps] = React.useState({
isOpt: false,
isAdd:false,
});
const columns = [
{
title: 'name',
dataIndex: 'name',
width: '20%',
editable: true,
type: 'Custom',
inputNode: (edit) => {
return <Input {...edit} />;
},
},
{
title: 'age',
dataIndex: 'age',
width: '15%',
editable: true,
type: 'Custom',
rules: [{ required: true, message: '请输入' }],
inputNode: (edit) => {
return <Input {...edit} />;
},
},
{
title: 'address',
dataIndex: 'address',
width: '30%',
editable: true,
type: 'Input',
},
];
return (
<div>
<EditTable
initValue={{ address: 2193}}
onValuesChange={(list) => setData(list)}
rowKey="key"
dataSource={data}
columns={columns}
onSave={(list) => setData(list)}
isAdd={true}
{...tableProps}
/>
</div>
);
};
export default EditableTable
参数 |
说明 |
类型 |
默认值 |
columns |
列 |
ColumnsProps[] |
- |
onSave |
保存数据 |
(data: any[], row: any, record?: any, indx?: number) => void |
- |
onBeforeSave |
保存数据之前校验 |
(item: any, record: any, index: number) => boolean |
- |
rowKey |
主键 |
string |
- |
optIsFirst |
操作列是放在首位还是最后 |
boolean |
- |
isOpt |
是否需要操作列 |
boolean |
- |
optConfig |
操作配置 |
ColumnsProps |
- |
isOptDelete |
操作是否需要 删除 按钮 |
boolean |
- |
isAdd |
是否存在新增按钮 |
boolean |
- |
initValue |
新增初始值 |
any |
- |
onBeforeAdd |
新增之前判断 |
() => boolean |
- |
onErr |
行报错信息 |
(err: ValidateErrorEntity<any>) => void |
- |
onValuesChange |
表单值更新事件 |
(list:any) => void |
- |
multiple |
是否可以多行编辑 |
boolean |
- |
addBtnProps |
新增按钮配置 |
ButtonProps |
- |
store |
form 存储表单 |
Store |
- |
参数 |
说明 |
类型 |
默认值 |
editable |
是否编辑 |
boolean |
- |
inputNode |
自定义 渲染编辑组件 |
(...arg: any[]) => React.ReactNode | React.ReactNode |
- |
rules |
规则 |
Rule[] |
- |
itemAttr |
formItem 表单 其他属性值 |
Omit<FieldProps, 'rules' | 'label' | 'name'> |
- |
attr |
formItem 表单 children 中组件参数 |
Partial<ItemChildAttr<any, any>> |
- |
type |
组件类型 |
ItemChildType |
- |
tip |
错误提示 |
(errs: string) => React.ReactNode |
- |
tipAttr |
Tooltip 组件属性 |
TooltipProps |
- |
isList |
是否是 List |
boolean |
- |
listAttr |
List 组件参数 |
Omit<ListProps, 'children' | 'name'> |
- |
render |
自定义 渲染(列原始默认的自定义渲染,加了个 other 参数,不是编辑状态下的表格渲染) , other 参数 只有操作列才有 |
(value: any,record: any,index: number,other?: OtherProps) => React.ReactNode | RenderedCell<any> |
- |
参数 |
说明 |
类型 |
默认值 |
editingKey |
编辑中字段 |
any[] |
- |
editable |
编辑中字段 |
boolean |
- |
newAdd |
当前行 是否编辑 |
any[] |
- |
isNewAdd |
是否新增的 |
boolean |
- |
save |
保存 ,key:主键 ,record:行数据 ,index:下标
|
(key: string | number, record: any, indx: number) => void |
- |
cancel |
取消 , id:主键
|
(id: string | number) => void |
- |
onDelete |
删除 ,id:主键 , rowItem 当前行数据 ,index:下标
|
(id: string | number, rowItem: any, index: number) => void |
- |
edit |
编辑 按钮 ,record 当前行数
|
(record: any) => void |
- |
参数 |
说明 |
类型 |
默认值 |
save |
保存 |
(key: string, record: any, indx: number) => void |
- |
onDelete |
删除 |
(id: string | number, rowItem: any, index: number) => void |
- |
edit |
编辑 |
(record: any) => void |
- |
cancel |
取消编辑 |
(key: string | number) => void |
- |
add |
新增 |
() => void |
- |
isEditing |
是否编辑中 |
(record: any) => boolean |
- |
editingKey |
编辑 id |
(string | number)[] |
- |
newAdd |
是否编辑 新增的数据 |
(string | number)[] |
- |
forms |
收集 所有 表单 |
Store |
- |
参数 |
说明 |
类型 |
默认值 |
preName |
当前行数据存储父级的name list时不用传 |
string |
- |
itemValue |
当前行的所有数据 |
any |
- |
tipAttr |
Tooltip 组件属性 |
TooltipProps |
- |
tip |
错误提示 |
(errs: string) => React.ReactNode |
- |
children |
进行覆写 方法时 新增一个 行参数 v |
React.ReactNode |
- |