Material-Table反应。如何使 table 标题和 Header 置顶
Material-Table React. How to make the table Title and Header sticky
是否可以使 Material-Table 中的 table 标题、搜索字段、全局操作图标和列 header 置顶?
我已经尝试将 headerStyle 添加到选项中,但没有任何效果(无论如何,这只会影响列 headers 而不会影响 table 标题等)
options={{
headerStyle: { position: 'sticky'},
paging: false,
search: false,
}}
有人知道怎么做吗?
我希望 'sticky header' 选项存在,但如果存在,我就看不到了!
我原以为粘性 header 是 tables 的一个相当常见的用例。
这是使用 Material Table:
的基本代码
import React from 'react';
import MaterialTable from 'material-table';
export default function MaterialTableDemo() {
const [state, setState] = React.useState({
columns: [
{ title: 'Name', field: 'name' },
{ title: 'Surname', field: 'surname' },
{ title: 'Birth Year', field: 'birthYear', type: 'numeric' },
{
title: 'Birth Place',
field: 'birthCity',
lookup: { 34: 'İstanbul', 63: 'Şanlıurfa' },
},
],
data: [
{ name: 'Mehmet', surname: 'Baran', birthYear: 1987,
birthCity: 63 },
{
name: 'Zerya Betül',
surname: 'Baran',
birthYear: 2017,
birthCity: 34,
},
],
});
return (
<MaterialTable
title="Editable Example"
columns={state.columns}
data={state.data}
editable={{
onRowAdd: (newData) =>
new Promise((resolve) => {
setTimeout(() => {
resolve();
setState((prevState) => {
const data = [...prevState.data];
data.push(newData);
return { ...prevState, data };
});
}, 600);
}),
onRowUpdate: (newData, oldData) =>
new Promise((resolve) => {
setTimeout(() => {
resolve();
if (oldData) {
setState((prevState) => {
const data = [...prevState.data];
data[data.indexOf(oldData)] = newData;
return { ...prevState, data };
});
}
}, 600);
}),
onRowDelete: (oldData) =>
new Promise((resolve) => {
setTimeout(() => {
resolve();
setState((prevState) => {
const data = [...prevState.data];
data.splice(data.indexOf(oldData), 1);
return { ...prevState, data };
});
}, 600);
}),
}}
/>
);
}
`
最后我想通了:
我必须将这些添加到 Material Table 选项中。这意味着提前知道您希望 table 达到的高度。我
options={{
headerStyle: { position: 'sticky', top: 0 },
maxBodyHeight: 500,
}}
然后这也有必要根据分页设置添加到 Material Table:
components={{
Container: props => (
<div style={{height: 500}}>
{props.children}
</div>
),
}}
是否可以使 Material-Table 中的 table 标题、搜索字段、全局操作图标和列 header 置顶?
我已经尝试将 headerStyle 添加到选项中,但没有任何效果(无论如何,这只会影响列 headers 而不会影响 table 标题等)
options={{
headerStyle: { position: 'sticky'},
paging: false,
search: false,
}}
有人知道怎么做吗?
我希望 'sticky header' 选项存在,但如果存在,我就看不到了! 我原以为粘性 header 是 tables 的一个相当常见的用例。
这是使用 Material Table:
的基本代码import React from 'react';
import MaterialTable from 'material-table';
export default function MaterialTableDemo() {
const [state, setState] = React.useState({
columns: [
{ title: 'Name', field: 'name' },
{ title: 'Surname', field: 'surname' },
{ title: 'Birth Year', field: 'birthYear', type: 'numeric' },
{
title: 'Birth Place',
field: 'birthCity',
lookup: { 34: 'İstanbul', 63: 'Şanlıurfa' },
},
],
data: [
{ name: 'Mehmet', surname: 'Baran', birthYear: 1987,
birthCity: 63 },
{
name: 'Zerya Betül',
surname: 'Baran',
birthYear: 2017,
birthCity: 34,
},
],
});
return (
<MaterialTable
title="Editable Example"
columns={state.columns}
data={state.data}
editable={{
onRowAdd: (newData) =>
new Promise((resolve) => {
setTimeout(() => {
resolve();
setState((prevState) => {
const data = [...prevState.data];
data.push(newData);
return { ...prevState, data };
});
}, 600);
}),
onRowUpdate: (newData, oldData) =>
new Promise((resolve) => {
setTimeout(() => {
resolve();
if (oldData) {
setState((prevState) => {
const data = [...prevState.data];
data[data.indexOf(oldData)] = newData;
return { ...prevState, data };
});
}
}, 600);
}),
onRowDelete: (oldData) =>
new Promise((resolve) => {
setTimeout(() => {
resolve();
setState((prevState) => {
const data = [...prevState.data];
data.splice(data.indexOf(oldData), 1);
return { ...prevState, data };
});
}, 600);
}),
}}
/>
); } `
最后我想通了:
我必须将这些添加到 Material Table 选项中。这意味着提前知道您希望 table 达到的高度。我
options={{
headerStyle: { position: 'sticky', top: 0 },
maxBodyHeight: 500,
}}
然后这也有必要根据分页设置添加到 Material Table:
components={{
Container: props => (
<div style={{height: 500}}>
{props.children}
</div>
),
}}