2

我真的需要你的帮助来解决检票口问题。

我想向 PropertyColumn 中的所有行(通过鼠标悬停)添加一个工具提示。但是我该怎么做呢?我已经看到了带有 Abstractcolumn 的解决方案。但我必须使用 PropertyColumn,因为我需要 propertyExpression 而不需要 sortProperty。

4

2 回答 2

3

一种方法是这样修改DataTable

add(new DefaultDataTable("wicektid", null, null, 10) {

    @Override
    protected Item newCellItem(String id, int index, IModel model) {
        Item item = super.newCellItem(id, index, model); 
        item.add(AttributeModifier.replace("title", "Your Title"));
        return item;
    }

    @Override
    protected Item newRowItem(String id, int index, IModel model) {
        Item item = super.newRowItem(id, index, model); 
        item.add(AttributeModifier.replace("title", "Your Title"));
        return item;
    }

});

如果您想要整行或单个单元格上的工具提示,您可以在此处进行控制。

如果您想在某些列中执行此操作,您可以populateItem在列中覆盖,如下所示:

add(new PropertyColumn<>(){

    @Override
    public void populateItem(Item<ICellPopulator<T>> item, String componentId, IModel<T> rowModel) {
        super.populateItem(item, componentId, rowModel); 
    }

});
于 2013-08-14T19:26:54.330 回答
2

我现在找到了解决方案。

首先,重要的是要知道,在 populateItem-Method 中,必须至少有一个对象。例如一个标签。因为您不能将字符串或工具提示添加到没有内容的单元格中。所以我不得不在其中放一个标签并将字符串添加到该标签中。之后,我在标签中添加了 PrototipBehavior:

 public void populateItem(final Item cellItem, final String componentId, final IModel model) {
                Long id = ((MyObject) model.getObject()).getId();
                String desc = ((MyObject) model.getObject()).getDescription();
                Label l = new Label(componentId, id + "");
                l.add(new PrototipBehaviour(desc));
                cellItem.add(l);

            }
于 2013-09-06T12:29:31.263 回答