代码之家  ›  专栏  ›  技术社区  ›  Santo

Wicket框架中ListView内部按钮的点击功能

  •  0
  • Santo  · 技术社区  · 11 年前

    我正在使用wicket中的ListView组件填充一个表。我的表的最后一列是按钮。因此,对于每一行,我都会在最后一列中有一个按钮。我试图实现的是删除相应行所需的按钮。所以为此,我需要在点击按钮时获得列表的当前索引。如何做到这一点?

    3 回复  |  直到 11 年前
        1
  •  1
  •   mvlupan    11 年前

    我将扩展Ajax按钮并在构造函数中传递行引用(项)。。。那么你可以做任何你想做的事。。通过重写onSubmit方法

    例子:

    private class SpecialButton extends AjaxButton {
        final Item<Object> rowItem;
    
        public SpecialButton(final String id, final Item<Object> rowItem) {
            super(id);
    
            this.rowItem = rowItem;
        }
    
        @Override
        protected void onSubmit(final AjaxRequestTarget target, final Form<?> form) {
            // here you cand do everything you want with the item and the model object of the item.(row)
            Object object = rowItem.getModelObject();
        }
    
    }
    

    您应该替换中的对象 Item<Object> 你的收割者模型。创建这个私有类之后,您可以对中继器中的每一行重用它。

    如果你想删除那一行,你只需要从用于生成中继器的列表中删除模型,并刷新中继器容器(Wicket不允许你通过将中继器添加到目标来刷新中继器…相反,你必须添加中继器continer。)

        2
  •  1
  •   jordeu    11 年前

    查看中继器Wicket示例页面,了解如何使用 ListView 以及其他中继器:

    http://www.wicket-library.com/wicket-examples/repeater/

    您可以从中获取列表的当前索引 item.getIndex()

    protected void populateItem(final ListItem<T> item) {
        int index = item.getIndex();
        ...  
    
        3
  •  0
  •   Community vonPryz    7 年前

    在这里寻找关于如何正确完成(无索引)的灵感:

    Wicket ListView not refreshing