需求是想要展现出一个表格,并且表格的每一行都有一个选择框,同时也有全选框,可全选和取消,同时可获取到选中框中的对象,方便将对象的值取出操作。 注意:checkGroup的全选只有放在Form控件中才会生效 html页面:
<form wicket:id="check"> <span wicket:id="group"> <div style="margin: 0 10px 0 10px"> <table border="1"> <thead> <tr> <th style="width: 10%"> <input type="checkbox" wicket:id="groupSelector"> </input> </th> <th> <!-- 可以加你的列名在这里 --> </th> </tr> </thead> </table> </div> <div style="margin: 0 10px 0 10px"> <table border="1" cellpadding="0" > <tbody> <tr wicket:id="itemList" > <td style="width: 10%;height: 15px" align="left"> <input type="checkbox" wicket:id="selected"/> </td> <td> <!-- 可以在这里为你的列填充对应的值 --> </td> </tr> </tbody> </table> </div> </span> </form>java代码:
/*首先定义一个CheckGroup生成方法,然后将数据填充到CheckGroup中 ManagerElement 是我做项目时的类,你可以根据自己的需求设置泛型,别忘在测试类里定义一个 存储对象的集合,这样方便把你勾选的对象取出放入集合中,在通过迭代的方法,一一取出里面的值。*/ public class PanelDemo{ //定义多选主体控件 private CheckGroup checkGroup; //定义表单,值得注意的是,多选框只会在表单中生效 Form form; public PanelDemo(){ form=new Form("check"); checkGroup=createGroup("group"); form.add(checkGroup); } private CheckGroup<ManagerElement > createGroup(String id){ final CheckGroup<ManagerElement> group = new CheckGroup<ManagerElement>(id,new ArrayList<ManagerElement>()); group.add(new CheckGroupSelector("groupSelector")); //根据自己情况获得一个Element的List,生成ListView填充数据 List<Element> list=managerService.getResult(); final ListView<ManagerElement > listView = new ListView("itemList", list) { protected void populateItem(final ListItem item) { //通过循环为ListView添加子控件 final ManagerElement managerElement = (ManagerElement) item.getModelObject(); //为每一行添加chenk控件 item.add(new Check("selected",new Model(managerElement))); /*在这里面你可以通过同样的方式,添加自己的列*/ item.setOutputMarkupId(true); } }; group.add(listView); //当check被勾选上时,获取被勾选的一个对象,并且把对象放到提前定义好的集合里 group.add(new AjaxFormChoiceComponentUpdatingBehavior() { @Override protected void onUpdate(AjaxRequestTarget target) { managerElements = group.getModelObject(); } }); return group; } } // managerElements中已经存储好了你的类的集合