多选基础资料是比较新的一个控件,对应的功能方法还没有完善。所以要获取多选基础资料的值就要自己写插件来获取了。
下面用一个监控多选基础资料值更新的事件来说明:
直接上代码:
package kd.sys.basedata.formplugin.account;
import org.apache.commons.lang3.StringUtils;
import kd.bos.bill.AbstractBillPlugIn;
import kd.bos.dataentity.entity.DynamicObject;
import kd.bos.dataentity.entity.DynamicObjectCollection;
import kd.bos.entity.datamodel.events.PropertyChangedArgs;
import kd.bos.form.field.events.BeforeF7SelectEvent;
import kd.bos.form.field.events.BeforeF7SelectListener;
public class PlacesChange extends AbstractBillPlugIn implements BeforeF7SelectListener {
@Override
public void beforeF7Select(BeforeF7SelectEvent arg0) {
// TODO Auto-generated method stub
}
@Override
public void propertyChanged(PropertyChangedArgs e) {
String propertyName = e.getProperty().getName();//获取元素
//基础数据资料
if("基础资料的标识".equals(propertyName)) {
DynamicObject dynamicObject = (DynamicObject) this.getModel().getValue("基础资料的标识");
String aString = "";
if (dynamicObject != null) {
aString = dynamicObject.get("要获取的标识").toString();
this.getModel().setValue("要赋值的控件标识", aString);
}
}
//多选基础数据资料
if("多选基础资料的标识".equals(propertyName)) {
DynamicObjectCollection dynamicObjectCollection = (DynamicObjectCollection) this.getModel().getValue("多选基础资料的标识");
String bString = "";
if(dynamicObjectCollection != null) {
for (DynamicObject dynamicObject : dynamicObjectCollection) {
if (StringUtils.isNotEmpty(bString)) {
bString = bString + ",";
}
bString = bString + dynamicObject.getDynamicObject("fbasedataid").get("要获取的标识").toString();
//此处的fbasedataid,是必须要写的,不然就会找不到对应的标识。
}
}
this.getModel().setValue("要赋值的控件标识", bString);
}
super.propertyChanged(e);
}
}