[英]How to create a custom filter box in a react material-table?
所以我在我正在处理的一个反应项目中有这个材料表,默认过滤选项只是在你的数据上方放置一行,你可以在其中输入任何你想要的东西。 我需要的是在表格上方制作一个可以单击的按钮,然后单击复选框以选择要过滤掉的内容。 我想知道是否有一种方法可以通过修改材料表给您的内容来做到这一点,或者我应该将复选框选项链接到 function 以再次获取数据并使用 a.filter 过滤掉它们? 不过,这似乎还有很长的路要走,对每个复选框都这样做,但我还没有真正找到解决我问题的任何地方。 我只见过有人用 react-table 来做这件事。 如果有任何建议,我将不胜感激。 这是一个关于我希望我的过滤器框看起来如何的可怜的 gimp 绘图
阅读您我了解您想要创建自定义过滤器。 因此,您可以根据 rowData 定义按钮和过滤器。 我找到了一个例子。 我希望它有帮助:
<MaterialTable
columns={[
{
title: "Adı",
field: "name"
},
{ title: "Soyadı", field: "surname" },
{ title: "Doğum Yılı", field: "birthYear", type: "numeric" },
{
title: "Doğum Yeri",
field: "birthCity",
lookup: { 34: "İstanbul", 63: "Şanlıurfa" }
}
]}
data={[
{ name: "Mehmet", surname: "Baran", birthYear: 1987, birthCity: 63 }
]}
options={{
filtering: true
}}
title="Demo Title"
icons={tableIcons}
components={{
FilterRow: props => <FilterRow {...props} /> <---- your modified filter row component
}}
/>
使用该示例,您可以覆盖所有过滤器,我认为这就是您想要做的。 您可以在列定义中定义您的过滤器。 之后让您自定义过滤器组件并获取道具数据以获得您想要的。
在同一篇文章中,您有更多关于如何管理过滤器更改的详细示例:
const CustomDatePicker = (props) => {
const [date, setDate] = useState(null);
return (
<DatePicker
label="Select Date"
inputVariant="outlined"
variant="inline"
format="dd/MM/yyyy"
value={date}
ampm
autoOk
allowKeyboardControl
style={{ minWidth: 175 }}
onChange={(event) => {
setDate(event);
props.onFilterChanged(props.columnDef.tableData.id, event);
}}
InputProps={{
endAdornment: (
<InputAdornment position="end">
<IconButton>
<EventIcon />
</IconButton>
</InputAdornment>
),
}}
/>
);
};
如果您只想在一列中覆盖:
{
title: "Created Date",
field: "order_created_date",
searchable: false,
grouping: false,
sorting: true,
type: "datetime",
filterComponent: (props) => <CustomDatePicker {...props} />,
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.