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