可编辑表格
安装
npm
npm install igroot-edit-table
yarn
yarn add igroot-edit-table
预览地址
https://playground-qguznsibkb.now.sh
扩展的属性
使用 renderFrom 方式来渲染表单项目,此方法居于render扩展,给出一个回调和一个可编辑表格的表单值。
(text: any, record: T, index: number, onChange: onChange, formValue: formValue): React.ReactNode;
配置示例
const columns: EditColumnProps<IUser>[] = [
{
title: "name",
dataIndex: "name",
renderForm: (value, row, index, onChange, formValue) => <Input value={value} onChange={e => {
if (formValue) {
formValue[index].cname = "可编辑表格"
}
onChange(e.target.value)
}
} />,
},
{
title: "可受控的表单项目cname",
dataIndex: "cname",
initValue: "默认值",
renderForm: (value, row, index, onChange) => <Input value={value} onChange={e => onChange(e.target.value)} />,
},
{
title: "下拉表单",
dataIndex: "options",
initValue: "2",
renderForm: (value, row, index, onChange) => <Select value={value} onChange={onChange}>
<Select.Option key="1">第一</Select.Option>
<Select.Option key="2">第二</Select.Option>
<Select.Option key="3">第三</Select.Option>
<Select.Option key="4">第四</Select.Option>
<Select.Option key="5">第五</Select.Option>
<Select.Option key="6">第六</Select.Option>
</Select>
},
{
title: "日期控件",
dataIndex: "date",
renderForm: (value, row, index, onChange) => <DatePicker value={value} onChange={onChange} />
},
{
title: "根据表单项生成的展示数据showDate",
dataIndex: "showDate",
render: (value, row) => {
if (row.date) {
return row.date.format()
} else {
return "暂未选择"
}
}
},
]
完整示例
import * as React from 'react'
import EditTable, { EditColumnProps } from 'igroot-edit-table'
import { Button, Card, Input, Form, Select, DatePicker } from 'igroot'
import { FormComponentProps } from 'igroot/lib/form';
import * as moment from 'moment';
import './index.less'
interface IUser {
key: number
name: string
cname: string
date: moment.Moment | undefined
}
const columns: EditColumnProps<IUser>[] = [
{
title: "name",
dataIndex: "name",
renderForm: (value, row, index, onChange, formValue) => <Input value={value} onChange={e => {
if (formValue) {
formValue[index].cname = "可编辑表格"
}
onChange(e.target.value)
}
} />,
},
{
title: "可受控的表单项目cname",
dataIndex: "cname",
initValue: "默认值",
renderForm: (value, row, index, onChange) => <Input value={value} onChange={e => onChange(e.target.value)} />,
},
{
title: "下拉表单",
dataIndex: "options",
initValue: "2",
renderForm: (value, row, index, onChange) => <Select value={value} onChange={onChange}>
<Select.Option key="1">第一</Select.Option>
<Select.Option key="2">第二</Select.Option>
<Select.Option key="3">第三</Select.Option>
<Select.Option key="4">第四</Select.Option>
<Select.Option key="5">第五</Select.Option>
<Select.Option key="6">第六</Select.Option>
</Select>
},
{
title: "日期控件",
dataIndex: "date",
renderForm: (value, row, index, onChange) => <DatePicker value={value} onChange={onChange} />
},
{
title: "根据表单项生成的展示数据showDate",
dataIndex: "showDate",
render: (value, row) => {
if (row.date) {
return row.date.format()
} else {
return "暂未选择"
}
}
},
]
class App extends React.Component<FormComponentProps> {
public test = () => {
const { getFieldsValue } = this.props.form
console.log(getFieldsValue());
}
componentDidMount() {
const { setFieldsValue } = this.props.form
setFieldsValue({
demos: [
{ cname: "setFieldsValuesh设置的值", name: "igroot-edit-table" },
{ cname: "setFieldsValuesh设置的值", name: "igroot-edit-table" },
{ cname: "setFieldsValuesh设置的值", name: "igroot-edit-table" }
]
})
}
render() {
const { getFieldDecorator } = this.props.form
return (
<Card title='可编辑表格示例'>
<Form>
{getFieldDecorator("demos")(
<EditTable<IUser>
columns={columns}
/>
)}
</Form>
<Button style={{ marginTop: 5 }} onClick={this.test}>获取表单值</Button>
</Card>
)
}
}
export default Form.create()(App)