简体   繁体   English

如何强制排序箭头始终显示在 react-admin Datagrid 中?

[英]How can I force sorting arrows to always display in a react-admin Datagrid?

It doesn't feel like best practice, but my users want to always see the arrows next to every column that's sortable in a list view.这感觉不是最佳实践,但我的用户希望始终在列表视图中可排序的每一列旁边看到箭头。 I'm building a web app in react, using the react-admin Datagrid object:我正在使用 react-admin Datagrid object 在 react 中构建 web 应用程序:


export const PermitList: FunctionComponent<FullProps> = (props) => {
    const { hasShow, ...rest } = props;
    return (
        <Datagrid {...rest}>
            <TextInput source="permitID" />
            <TextInput source="dept" />
            <TextInput source="workOrder" />
            <TextInput source="status" getColor={getColorFromStatus} />
            <ListButtons hasShow={hasShow!} label="Edit Permit" canDelete={false} />
        </Datagrid>
    );
};

Fields permitID, dept, workOrder, and status are all sortable.字段 permitID、dept、workOrder 和 status 都是可排序的。 The sort arrow appears by default when the grid header is clicked and the field sorts, but my users want to see all sort arrows all the time.当单击网格 header 并对字段进行排序时,默认情况下会出现排序箭头,但我的用户希望一直看到所有排序箭头。 I haven't been able to find any documentation on this.我还没有找到任何关于此的文档。 Is there a way to display it using Datagrid, or do I need to use a different grid object?有没有办法使用 Datagrid 显示它,还是我需要使用不同的网格 object?

You can manually add your own arrow elements using headerClassName for each sortable field:您可以使用 headerClassName 为每个可排序字段手动添加自己的箭头元素:

const useListStyles = makeStyles(theme => ({
  myHeader: {
    "&&:before": { 
      content: '" ⇅ "',
      color: 'red',
    },
  },
}))

const CardList = (props) => {
  const classes = useListStyles()

  return (
    <List {...props} >
      <Datagrid>
        <TextField source="id" />
        <TextField source="name" headerClassName={classes.myHeader} />
      </Datagrid>
    </List>
  )
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM