多选F7赋值、保存与展示

1.样例说明

多选F7赋值、保存与展示。
该样例对手动或勾选的多选F7值实现了保存与再次编辑时的展现,实现上基于数据库新增字符串字段存储多选F7Id集合信息。样例主要由三部分组成:
第一部分包括:通过设置F7的多选属性将F7改变为多选F7,达到多选的目的。
第二部分包括:多选F7设定值的存储,将多选F7设定值的ID信息提取处理为字符串,并存储到后台数据表的新建字段中。
第三部分包括:通过为WebInitDataEvent事件添加后处理方法,达到取出ID信息对应的值,并绑定到前台多选F7控件内。

2.样例配置

页面控件配置如下图所示:
表格冻结

保存多选F7Id集配置如下图所示:
表格冻结

多选F7展现配置如下图所示:
后台:
表格冻结
前台:
表格冻结

3.关键代码

3.1前台js事件代码:

    getMulF7Ids:function(e){
        var f7ValueArr=waf("#customer").wafPromptBox("getValue");
        //若多选F7未选中,则退出该函数。
        if(f7ValueArr==null){
            return;
        }
        //使用“,”拼接Id信息
        var lengthArr=f7ValueArr.length;
        var idsStrArr=new Array(lengthArr);
        for(var i=0;i<lengthArr;i++){
            idsStrArr[i]=f7ValueArr[i].id;
        }
        var idsStr=idsStrArr.join(",");

        waf("#customerIds").wafText("setValue",idsStr);
    }
	,
assignValuesToMulF7:function(e){
        var customerIds=_self.getPageInitData().customers;
        //页面绑定多选F7值
        waf("#customer").wafPromptBox("setValue",_self.getPageInitData().customers);
    }

3.2后台Java事件处理程序代码:

    package com.kingdee.eas.custom.handler;

import java.util.Arrays;
import java.util.HashSet;

import javax.servlet.http.HttpServletRequest;

import org.springframework.ui.ModelMap;

import com.kingdee.bos.BOSException;
import com.kingdee.bos.metadata.entity.EntityViewInfo;
import com.kingdee.bos.metadata.entity.FilterInfo;
import com.kingdee.bos.metadata.entity.FilterItemInfo;
import com.kingdee.bos.metadata.entity.SelectorItemCollection;
import com.kingdee.bos.metadata.entity.SelectorItemInfo;
import com.kingdee.bos.metadata.query.util.CompareType;
import com.kingdee.bos.webframework.dynamic.application.WebSymbolConstant;
import com.kingdee.bos.webframework.dynamic.event.view.IWebInitDataEventHandler;
import com.kingdee.bos.webframework.dynamic.event.view.WebInitDataEvent;
import com.kingdee.bos.webframework.dynamic.handler.AbstractWebEventHandler;
import com.kingdee.bos.webframework.exception.WafException;
import com.kingdee.eas.basedata.master.cssp.CustomerCollection;
import com.kingdee.eas.basedata.master.cssp.CustomerFactory;
import com.kingdee.eas.custom.webdevsample.NetOrderInfo;
import com.kingdee.util.StringUtils;
   
    public class GetMulF7InfoHandler extends AbstractWebEventHandler implements IWebInitDataEventHandler {

@Override
public void onRequest(WebInitDataEvent event) throws WafException,
		BOSException {
	//判断是否为新增页面,是则返回。
	HttpServletRequest request=event.getReqeustContext().getHttpServletRequest();
	String billId = request.getParameter("billId");
	if (StringUtils.isEmpty(billId))
		return;
	//根据Id集合获取相应多选F7结果。
	NetOrderInfo info = (NetOrderInfo)event.getReqeustContext().get(ModelMap.class).get(WebSymbolConstant.INFO);
	//若info的CustomerIds为空则函数直接返回(保存了空字符串时情况)。
	String CustomerIds=info.getCustomerIds();
	if(CustomerIds==null)
		return;
	EntityViewInfo view = new EntityViewInfo();
	SelectorItemCollection coll=new SelectorItemCollection();
	coll.add(new SelectorItemInfo("id"));
	coll.add(new SelectorItemInfo("name"));
	coll.add(new SelectorItemInfo("number"));
	view.setSelector(coll);
	FilterInfo filterInfo = new FilterInfo();
	FilterItemInfo filterItemInfo = new FilterItemInfo("id",new HashSet<String>(Arrays.asList(CustomerIds.split(","))),CompareType.INCLUDE);
	filterInfo.getFilterItems().add(filterItemInfo);
	view.setFilter(filterInfo);
	CustomerCollection customers = CustomerFactory.getRemoteInstance().getCustomerCollection(view);
	event.getInitData().put("customers", customers);
}

}

4.样例演示

1.配置页面

2.预览页面

相关样例