【问题标题】:On click functionality of Button Inside ListView in Wicket FrameworkWicket框架中ListView内按钮的点击功能
【发布时间】:2013-03-15 07:36:01
【问题描述】:

我使用 wicket 中的 ListView 组件填充表格。表格的最后一列是按钮。因此,对于每一行,我将在最后一列中有一个按钮。我想要实现的是我需要删除相应行的按钮的 onlick。因此,为此我需要在单击按钮时获取列表的当前索引。如何实现/得到这个?

【问题讨论】:

    标签: wicket wicket-1.5 wicketstuff


    【解决方案1】:

    我会扩展 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&lt;Object&gt; 的 Object 替换为您的中继器模型。创建此私有类后,您可以将其重复用于转发器中的每一行。

    如果您想删除该行,您只需从用于生成转发器的列表中删除模型并刷新转发器容器(Wicket 不允许您通过将转发器添加到目标来刷新转发器...而是您必须添加中继器。)

    【讨论】:

      【解决方案2】:

      查看转发器 Wicket 示例页面以了解如何使用 ListView 和其他转发器:

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

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

      protected void populateItem(final ListItem<T> item) {
          int index = item.getIndex();
          ...  
      

      【讨论】:

      • 是的。但这只有在填充列表视图时才有可能。所以点击按钮是不可能实现的:-(
      • 当您单击该按钮时,您的页面会再次呈现,还是您使用的是 AJAX 链接?
      • 那我不明白这个问题。如果您更新 ListView 列表模型,则必须在页面呈现后删除该行。你能给我们看一些代码吗?
      • 我的代码在远程机器中。由于我的声誉低于 10,我什至无法发布图像。根据代码,索引总是在 onSubmit 作为最后的索引列表的索引,因为 onSubmit 将在填充列表视图后被调用,它始终保存最后一个对象的索引。
      【解决方案3】:

      在此处寻找有关如何正确执行此操作的灵感(无索引):

      Wicket ListView not refreshing

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-09
        相关资源
        最近更新 更多