如何在wicket框架下设置勾选框组checkGroup

来源:互联网 发布:sai mac破解版 编辑:程序博客网 时间:2024/06/11 16:29

需求是想要展现出一个表格,并且表格的每一行都有一个选择框,同时也有全选框,可全选和取消,同时可获取到选中框中的对象,方便将对象的值取出操作。
注意: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中已经存储好了你的类的集合
原创粉丝点击