多选基础资料-前端控件赋值原创
金蝶云社区-Mrchen
Mrchen
0人赞赏了该文章 900次浏览 未经作者许可,禁止转载编辑于2022年12月16日 13:55:15

一、需求阐明

    当新增数据时,给多选基础资料自动赋值指定数据到前端。

image.png

当新增数据时,将指定的四大名著(西游记、水浒传、红楼梦、三国演义)赋值给前端多选基础资料控件四大名著。


二、分析实现

    针对此需求,采用表单基类(AbstractFormPlugin)的afterCreateNewData事件。【说明】:无论用什么事件,业务逻辑基本一致。

@Override
public void afterCreateNewData(EventObject e) {
    super.afterCreateNewData(e);
    // 图书编码表示
    String bookNumber = "kaen_book";

    // 1.将四大名著存储当作过滤条件
    List<String> bookNames = Arrays.asList(new String[]{"西游记", "水浒传","红楼梦","三国演义"});

    // 2.加载出四大名著
    DynamicObject[] loadBookByName = BusinessDataServiceHelper.load(bookNumber, "id",
            new QFilter[]{new QFilter("name", QCP.in, bookNames)});

    // 3.获取id
    ArrayList<String> ids = new ArrayList<>();
    for (DynamicObject dynamicObject : loadBookByName) {
        ids.add(dynamicObject.getPkValue().toString());
    }

    // 4.赋值  只能传入Object[]、DynamicObjectCollection、Map。所以还得将ids转换为Object[]类型
    this.getModel().setValue("fourgreatclassics",ids.toArray());
}


三、效果预览

image.png

可以看到成功。如果有最佳方案,分享在评论区。

多选基础资料后端赋值并保存

赞 0