3

我想指定 Tapestry Grid 组件分配给列中的 TH 和 TD 标签的 css 类。这可能吗?

4

2 回答 2

3

答案是肯定的!

如果史蒂夫·恩扬(Steve Enyon)的回答中提到的类属性还不够,您可以在网格通过 mixin 呈现后装饰 DOM。我在这里创建了一个 GridDecorator mixin,它可以根据单元格/行中的值来装饰TR和元素。TD在我的示例中,我向 DOM 添加onclickstyle属性。您可以轻松地调整 mixin 以TH使用 GridHeaderCellDecorator 装饰元素并class在必要时添加属性。

我的 2p,我认为 Grid 早就应该进行大修了,像这样的定制应该比它们容易得多。

于 2013-05-29T09:04:15.593 回答
1

最简洁的答案是不。

Tapestry 所做的是根据它所代表的属性为每一列赋予一个唯一的 css 类。然后,您可以以任何您想要的方式设置该类的样式。

例如,如果你有一个GridUser

public class User {
    public String firstName;
    public String lastName;
}
<t:grid source="users" />

Tapestry 将生成类似于以下内容的 HTML:

<table>
    <thead>
        <tr>
            <th class="firstName">First Name</th>
            <th class="lastName">Last Name</th>
        </tr>
    </thead>
    <tbody>
        ...
        <tr>
            <td class="firstName">Traci</td>
            <td class="lastName">Lords</td>
        </tr>
        ...
    </tbody>
</table>

有关更多详细信息,请参阅Grid API 页面CSS底部的部分。

如果您有一些想要应用于特定列的通用样式,并且您碰巧使用了less,那么您可以使用less mixins(不要与 Tapestry mixins 混淆)。来自 Less 网站:

Mixins 允许您通过简单地将类名作为其属性之一将类的所有属性嵌入到另一个类中

于 2013-05-29T08:51:48.303 回答