私はReact +素材表)を使っています。
私が持っている質問
私は何を達成しようとしていますか?
素材テーブルに表示される行数は画面サイズに依存する必要があります。ページは画面サイズ(例えば、ノートパソコンのデバイスでは、25インチのディスプレイでは、行で埋める可能性がある多くのスペースがあるでしょう)のスペースがあるでしょう。
私はすでにしたこと?
もちろん、できるだけ多くの行を埋めるためにコンテナサイズと行サイズに基づいていくつかの簡単な計算を行うスクリプトを構築することが可能ですが、この解決策を回避し、可能であれば箱外のものを使用します。
私も同じ要件がありました。そのため、 ' React-Virtualized-Auto-Sizer 'パッケージからautosizerを使用して、解決策を見つけました。 「品目テーブル」パッケージとうまくいきます。
サンプルコード:
import AutoSizer from 'react-virtualized-auto-sizer';
export default function Monitor() {
const columns = [...];
const data = [..];
return (
<AutoSizer>
{({ height, width }) => {
console.log(`Height: ${height} | Width: ${width}`);
const pageSize = Math.floor((height - 192) / 48);
console.log(`Page Size: ${pageSize}`);
return (
<div style={{ height: `${height}px`, width: `${width}px`, overflowY: 'auto' }}>
<MaterialTable
columns={columns}
data={data}
options={{
pageSize: pageSize,
pageSizeOptions: [],
toolbar: true,
paging: true
}}
icons={tableIcons}
></MaterialTable>
</div>
);
}}
</AutoSizer>
);
}
_
私のために働いた解決策は、次のところ( 資料表のドキュメント )です。
_ <MaterialTable minRows={10}
localization={{
toolbar: {
searchPlaceholder: "Buscar",
searchTooltip: "Buscar "
},
pagination:{
labelRowsSelect:"Registros",
labelRowsPerPage:"Filas por pagina"
},
body: {
deleteTooltip: "Eliminar",
emptyDataSourceMessage: "No existen registros"
}
}}
title="Listado de registros"
columns={state.columns}
data={state.data}
actions={[
{
icon: 'add',
tooltip: 'Agregar',
isFreeAction: true,
onClick: props.addRegister
}
]}
options={{
pageSize: 10,
pageSizeOptions: [5, 10, 20, 30 ,50, 75, 100 ],
toolbar: true,
paging: true
}}
components={{
Pagination: props => (
<TablePagination
{...props}
labelRowsPerPage={<div style={{fontSize: 14}}>{props.labelRowsPerPage}</div>}
labelDisplayedRows={row => <div style={{fontSize: 14}}>{props.labelDisplayedRows(row)}</div>}
SelectProps={{
style:{
fontSize: 14
}
}}
/>
)
}}
>
</MaterialTable>
_