2017-07-03 16 views
1

我有一个List视图,其中我想根据在Datagrid组件创建的表中呈现的当前行的值呈现ReferenceField字段。admin-on-rest:在Datagrid组件中访问行的列数据

如何访问当前行的数据? (当前行的列的值)。

我试过record.processed但我得到一个错误,指出记录对象不存在(processed是我想检查的记录中的一列,以便格式化该字段)。我也试过resource.processed,this.props.processedthis.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建议施加110C到参考字段字段,修改它以显示正确的内容如下:

const CustomField = (props) => (
    <span> 
    {props.record.processed ? 
     <ReferenceField label="Processed By" source="processedBy_id" reference="Users"> 
     <TextField source="username" /> 
     </ReferenceField> 
    : <span>Nobody</span> } 
    </span> 
); 

回答

1

该记录在您想要作为变量的位置不是真正可用的。它作为道具传递给组件。

所以你可以做到这一点。

<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。你可以找到例子这里

https://marmelab.com/admin-on-rest/Theming.html

+0

谢谢!这稍作修改。 –