如何让vaadin-grid填充页面

How to get vaadin-grid to fill the page

我正在使用 vaadin-grid 元素(聚合物网络组件,而不是 java 网格)。我看到我可以通过 visible-rows 属性设置网格上显示的行数。但是我找不到让网格占用所有可用 space 的方法,即将行动态设置为填充页面所需的行。文档暗示这是可能的。 demo expenses app 似乎也这样做,虽然我不知道在哪里。

这是一个非常简单的示例,无论页面大小如何,它始终显示 10 行。

<head>
    <script src="https://cdn.vaadin.com/vaadin-elements/latest/webcomponentsjs/webcomponents-lite.js"></script>
    <link href="https://cdn.vaadin.com/vaadin-elements/latest/vaadin-grid/vaadin-grid.html" rel="import">
</head>

<body>
<vaadin-grid>
    <table>
        <colgroup>
            <col>
            <col>
            <col>
        </colgroup>
        <thead>
        <tr>
            <th>Name</th>
            <th>Value</th>
            <th>Progress</th>
        </tr>
        </thead>
        <tbody>
        <tr><td>Project A</td><td>10000</td><td>0.8</td></tr>
        <tr><td>Project A</td><td>10000</td><td>0.8</td></tr>
        <tr><td>Project A</td><td>10000</td><td>0.8</td></tr>
        <tr><td>Project A</td><td>10000</td><td>0.8</td></tr>
        <tr><td>Project A</td><td>10000</td><td>0.8</td></tr>
        <tr><td>Project A</td><td>10000</td><td>0.8</td></tr>
        <tr><td>Project A</td><td>10000</td><td>0.8</td></tr>
        <tr><td>Project A</td><td>10000</td><td>0.8</td></tr>
        <tr><td>Project A</td><td>10000</td><td>0.8</td></tr>
        <tr><td>Project A</td><td>10000</td><td>0.8</td></tr>
        <tr><td>Project A</td><td>10000</td><td>0.8</td></tr>
        <tr><td>Project A</td><td>10000</td><td>0.8</td></tr>
        <tr><td>Project A</td><td>10000</td><td>0.8</td></tr>
        </tbody>
    </table>
</vaadin-grid>
</body>

</html>

除了使用 visible-rows 属性外,您还可以使用普通 CSS 直接设置 height 属性。

您也可以像在费用管理器演示中那样使用 flex

我稍微修改了您的代码,以举例说明如何使用 flex 属性。

   <head>
    <script src="https://cdn.vaadin.com/vaadin-elements/latest/webcomponentsjs/webcomponents-lite.js"></script>
    <link href="https://cdn.vaadin.com/vaadin-elements/latest/vaadin-grid/vaadin-grid.html" rel="import">
</head>

    <body style="display: flex; flex-direction: column">
    <div id="content" style="flex: 1">
      Some Content Here
    </div>
    <div id="container" style="flex: 3; display: flex">
    <vaadin-grid style="flex: 1">
        <table>
            <colgroup>
                <col>
                <col>
                <col>
            </colgroup>
            <thead>
            <tr>
                <th>Name</th>
                <th>Value</th>
                <th>Progress</th>
            </tr>
            </thead>
            <tbody>
            <tr><td>Project A</td><td>10000</td><td>0.8</td></tr>
            <tr><td>Project A</td><td>10000</td><td>0.8</td></tr>
            <tr><td>Project A</td><td>10000</td><td>0.8</td></tr>
            <tr><td>Project A</td><td>10000</td><td>0.8</td></tr>
            <tr><td>Project A</td><td>10000</td><td>0.8</td></tr>
            <tr><td>Project A</td><td>10000</td><td>0.8</td></tr>
            <tr><td>Project A</td><td>10000</td><td>0.8</td></tr>
            <tr><td>Project A</td><td>10000</td><td>0.8</td></tr>
            <tr><td>Project A</td><td>10000</td><td>0.8</td></tr>
            <tr><td>Project A</td><td>10000</td><td>0.8</td></tr>
            <tr><td>Project A</td><td>10000</td><td>0.8</td></tr>
            <tr><td>Project A</td><td>10000</td><td>0.8</td></tr>
            <tr><td>Project A</td><td>10000</td><td>0.8</td></tr>
            </tbody>
        </table>
    </vaadin-grid>
    </div>
    </body>

    </html>

您可以在此处的 jsbin 上实时试用:http://jsbin.com/kigonu/edit?html,css,output