0

我是 wicket 的新手,我根本不知道 jQuery。我使用检票口 6.9.0。我需要将选择/取消选择所有复选框添加到检票口 DataTable。我已经阅读并实施了“Apache Wicket Cookbook”中的示例,您可以在Apache Wicket Cookbook 的第 28 页上看到它。第 5 章 但取消全选不起作用。我在这里也读过建议:http: //evanchooly.com/logs/%23%23wicket/2011-08-31

问题是 - 我不知道如何通过 Check*Selector 或以某种方式实现它。谁能帮我举一个简单有用的例子?

** 更新:**

正如@svenmeier 在评论中所写。我正在尝试添加 checkgroupselector 以选择所有复选框,并且我执行了以下操作:

Form form = new Form("form");

CheckGroup group = new CheckGroup("group");
   group.add(new CheckGroupSelector("groupselector"));
   DataTable sourceTable = new DataTable("mytable", getColumns(), getDataProvider(), 10);
   sourceTable.setOutputMarkupPlaceholderTag(true);
   group.add(sourceTable);
   add(form);
   form.add(group);


private List getColumns() {
        List<IColumn<MyItem, String>> ret = Lists.newArrayList();
        ret.add(new AbstractColumn<MyItem, String>(new Model<>("")) {
            @Override
            public void populateItem(Item<ICellPopulator<MyItem>> cellItem, String componentId, IModel<MyItem> rowModel) {
                CheckBoxPanel checkBoxPanel = new CheckBoxPanel(componentId);
                cellItem.add(checkBoxPanel);
            }
        });
...
}

<span wicket:id="group">
<input type="checkbox" wicket:id="groupselector">check/uncheck all</input>
<table wicket:id="mytable">[Lookup Results]</table>
</span>

要将 CheckBox 添加到 DataTable 我必须使用面板,所以我有以下内容:

public class CheckBoxPanel extends Panel {

    private CheckBox field;

    public CheckBoxPanel(String id, IModel<Boolean> model) {
        super(id);
        field = new CheckBox("checkBox", model);
        add(field);
    }

    public CheckBoxPanel(String id) {
        this(id, new Model<Boolean>());
    }

    public CheckBox getField() {
        return field;
    }
}

在 CheckBoxPanel.html 中

<body>
    <wicket:panel xmlns:wicket="http://wicket.apache.org">
        <input type="checkbox" wicket:id="checkBox">
    </wicket:panel>
</body>

实际上它确实显示了检查组,但在我的表格下并且选中/取消选中它不会影响它下面的复选框。我在这里做错了什么?

4

2 回答 2

1

我已经从Apache Wicket Cookbook 实现了相同的示例。第 118 页的第 5 章“添加选择/取消选择所有复选框”并遇到同样的问题。SelectAll 有效,DeselectAll 无效。这可以修复:

将 jQuery 语句从

private final String js="var val=$(this).attr('checked'); $('." + uuid + "').each(function() { $(this).attr('checked', val); });";

private final String js = "if($(this).attr('checked') == 'checked') {var val=true;} else {var val=false;}$('." + uuid + "').each(function() { $(this).attr('checked', val); });";

第一条语句中的问题是,如果未选中复选框,则 val 是“未定义”而不是“假”。

于 2015-11-26T10:42:08.130 回答
0

在此处查看示例用法:

http://www.wicket-library.com/wicket-examples/compref/wicket/bookmarkable/org.apache.wicket.examples.compref.CheckGroupPage

对于 CheckGroupSelector,它使用 ListView 而不是 DataTable,这无关紧要。

于 2013-07-11T08:01:28.427 回答