1 在EO中加入一Boolean类型的字段:isCheck;
同时在刚才的组件下面加入如下代码:
4 在页面上加入checkBox事件:
2 在VO中加入刚才在EO中的字段;
把VO拖到页面以Table显示,并修改isCheck列的组件为:
<af:selectBooleanCheckbox value="#{row.isCheck}" id="ot5"/>
同时在刚才的组件下面加入如下代码:
<f:facet name="header">
<af:selectBooleanCheckbox label="全选" id="sbc1">
<af:clientListener type="valueChange" method="selectAllcheckBox"/>
<af:serverListener type="SelectAllCheckBoxClickEvent"method="#{Bean.multipleChoice}"/>
</af:selectBooleanCheckbox>
</f:facet>
4 在页面上加入checkBox事件:
<af:resource type="javascript">
function selectAllcheckBox(event) {
var source = event.getSource();
var isChecked = source.getValue();
AdfCustomEvent.queue(source, "SelectAllCheckBoxClickEvent",
{
params : isChecked
}, false);
}
</af:resource>
5 在Bean的编写全选或全不选代码,首先把table绑定到bean中,在multipleChoice方法中加入如下代码:
public void multipleChoice(ClientEvent clientEvent){
boolean isSelectAllChecked = (Boolean)clientEvent.getParameters().get("params");
RichTable rt = get_table();
for (int i = 0; i < rt.getRowCount(); i++) {
JUCtrlHierNodeBinding rowData = (JUCtrlHierNodeBinding)rt.getRowData(i);
Row row = rowData.getRow();
row.setAttribute("isCheck", isSelectAllChecked);
AdfFacesContext.getCurrentInstance().addPartialTarget(rt); //刷新table列表
}
}
6 处理业务,比如提交到数据库,在提交前需要判断是否有勾选记录,代码如下:
public boolean isMoreThanOneRowSelected() {
boolean isMoreThanOne = false;
DCIteratorBinding dcIterator =ADFUtils.findIterator("VO的迭代器名称");
ViewObject vo = dcIterator.getViewObject();
for (int i = 0; i < vo.getEstimatedRowCount(); i++) {
Row row = dcIterator.getRowAtRangeIndex(i);
String isSelected = row.getAttribute("isCheck").toString();
if ((isSelected != null) && Boolean.parseBoolean(isSelected)) {
isMoreThanOne = true;
break;
}
}
return isMoreThanOne;
}
7 最终是对勾选的记录编写业务实现,代码如下:
DCIteratorBinding dcIterator =ADFUtils.findIterator("VO的迭代器名称");
RowSetIterator rsi =dcIterator.getRowSetIterator().getRowSet()
.createRowSetIterator("自己定义名称");
rsi.reset();
Row selectRow;
while (rsi.hasNext()) {
Row selectRow= rsi.next();
if(selectRow!=null){
String isSelected = String.valueOf(row.getAttribute("isCheck"));
if ((isSelected != null) && Boolean.parseBoolean(isSelected)) {
//业务处理
}
}
}