admin-on-rest:在 Datagrid 组件中访问行的列数据
admin-on-rest: Access row's column data within a Datagrid component
我有一个 List
视图,我想在其中根据 Datagrid
table 中呈现的当前行的值呈现 ReferenceField
字段组件创建。
如何访问当前行的数据? (当前行的列的值)。
我试过 record.processed
但我收到一条错误消息,指出记录对象不存在(processed
是记录中的一列,我想检查它以便格式化该字段) .我也尝试了 resource.processed
、this.props.processed
和 this.props.record.processed
,但都没有成功。
显示我正在尝试执行的操作的代码如下:
<List title="Sales Inquiries" filter={{ request_type: 'sales' }} {...props}>
<Datagrid>
<TextField source="id" />
<TextField source="firstname" label="First Name" />
<TextField source="lastname" label="Last Name" />
<TextField source="company" />
<TextField source="email" />
<DateField source="timestamp" label="Received" />
{record.processed ?
<ReferenceField label="Processed By" source="processedBy_id" reference="Users">
<TextField source="username" />
</ReferenceField>
: <span>Nobody</span> }
<ShowButton />
</Datagrid>
</List>
编辑
按照@kunal pareek 的建议将 HOC 应用于修改它的 ReferenceField 字段,以便显示正确的内容,如下所示:
const CustomField = (props) => (
<span>
{props.record.processed ?
<ReferenceField label="Processed By" source="processedBy_id" reference="Users">
<TextField source="username" />
</ReferenceField>
: <span>Nobody</span> }
</span>
);
记录在您想要作为变量的位置并不真正可用。它作为道具传递给组件。
所以你可以做到这一点。
<List title="Sales Inquiries" filter={{ request_type: 'sales' }} {...props}>
<Datagrid>
<TextField source="id" />
<TextField source="firstname" label="First Name" />
<TextField source="lastname" label="Last Name" />
<TextField source="company" />
<TextField source="email" />
<DateField source="timestamp" label="Received" />
<CustomField />
<ShowButton />
</Datagrid>
</List>
const CustomField = (props) => (
{props.record.processed ?
<ReferenceField label="Processed By" source="processedBy_id" reference="Users">
<TextField source="username" />
</ReferenceField>
: <span>Nobody</span> }
)
以上只是一个简单的例子。我已经直接使用了您的代码并重新格式化了它,因此它可能无法立即运行。但是我一直在使用这种方法在几个地方更改我的组件的值。
您也可以使用 HOC。您可以在此处找到示例
dependent-input 插件可以帮助您。
我有一个 List
视图,我想在其中根据 Datagrid
table 中呈现的当前行的值呈现 ReferenceField
字段组件创建。
如何访问当前行的数据? (当前行的列的值)。
我试过 record.processed
但我收到一条错误消息,指出记录对象不存在(processed
是记录中的一列,我想检查它以便格式化该字段) .我也尝试了 resource.processed
、this.props.processed
和 this.props.record.processed
,但都没有成功。
显示我正在尝试执行的操作的代码如下:
<List title="Sales Inquiries" filter={{ request_type: 'sales' }} {...props}>
<Datagrid>
<TextField source="id" />
<TextField source="firstname" label="First Name" />
<TextField source="lastname" label="Last Name" />
<TextField source="company" />
<TextField source="email" />
<DateField source="timestamp" label="Received" />
{record.processed ?
<ReferenceField label="Processed By" source="processedBy_id" reference="Users">
<TextField source="username" />
</ReferenceField>
: <span>Nobody</span> }
<ShowButton />
</Datagrid>
</List>
编辑
按照@kunal pareek 的建议将 HOC 应用于修改它的 ReferenceField 字段,以便显示正确的内容,如下所示:
const CustomField = (props) => (
<span>
{props.record.processed ?
<ReferenceField label="Processed By" source="processedBy_id" reference="Users">
<TextField source="username" />
</ReferenceField>
: <span>Nobody</span> }
</span>
);
记录在您想要作为变量的位置并不真正可用。它作为道具传递给组件。
所以你可以做到这一点。
<List title="Sales Inquiries" filter={{ request_type: 'sales' }} {...props}>
<Datagrid>
<TextField source="id" />
<TextField source="firstname" label="First Name" />
<TextField source="lastname" label="Last Name" />
<TextField source="company" />
<TextField source="email" />
<DateField source="timestamp" label="Received" />
<CustomField />
<ShowButton />
</Datagrid>
</List>
const CustomField = (props) => (
{props.record.processed ?
<ReferenceField label="Processed By" source="processedBy_id" reference="Users">
<TextField source="username" />
</ReferenceField>
: <span>Nobody</span> }
)
以上只是一个简单的例子。我已经直接使用了您的代码并重新格式化了它,因此它可能无法立即运行。但是我一直在使用这种方法在几个地方更改我的组件的值。
您也可以使用 HOC。您可以在此处找到示例
dependent-input 插件可以帮助您。