Oracle ADF 实现全选,全不选,多选功能

1 在EO中加入一Boolean类型的字段:isCheck;

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)) {
   					//业务处理
           }
	   }	
   }


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值