单据列表,超链接,打开单据详情原创
金蝶云社区-吴锐雄
吴锐雄
29人赞赏了该文章 7,296次浏览 未经作者许可,禁止转载编辑于2021年10月08日 17:53:43

创作不易,如果文章对您有帮助,请为我点击一个朴实无华的赞^_^


单据列表如果设置了超链接,自带了点击事件,点击超链接之后,会自动弹出到单据详情。

如果想对单据详情的页面做一些定制,例如修改高度、宽度、标题等等,就需要开发者自己去做插件的开发。


开发流程:

  1. 创建单据列表插件

  2. 在billListHyperLinkClick中获取取消原本的超链点击后续事件

  3. 获取当前行的单据标识,单据pkid,然后打开单据详情弹框

  4. 注册插件


开发之前:

Image_20211008175138.png

image.png

单据详情的弹框占满了整个界面

Image_20211008175211.png



开发流程详情:

1 创建单据列表插件

image.png


2 在billListHyperLinkClick中获取取消原本的超链点击后续事件

image.png

3 获取当前行的单据标识,单据pkid,然后打开单据详情弹框

image.png


完整代码如下

package kd.ecos.demo;

import kd.bos.algo.DataSet;
import kd.bos.algo.Row;
import kd.bos.bill.BillShowParameter;
import kd.bos.dataentity.entity.LocaleString;
import kd.bos.form.*;
import kd.bos.form.control.events.ItemClickEvent;
import kd.bos.form.events.BillListHyperLinkClickEvent;
import kd.bos.form.events.HyperLinkClickArgs;
import kd.bos.list.BillList;
import kd.bos.list.plugin.AbstractListPlugin;
import kd.bos.orm.ORM;
import java.util.Iterator;


public class DemoTextLineListPlugIn extends AbstractListPlugin {

    @Override
    public void billListHyperLinkClick(HyperLinkClickArgs args) {
        System.out.println();
        if ("kdec_textile_name".equals(args.getFieldName()) && args.getHyperLinkClickEvent() instanceof BillListHyperLinkClickEvent) {
            // 原来的超链接点击之后会打开单据详情,把它取消,开发者自己做打开逻辑
            args.setCancel(true);

            // 以弹窗的形式打开单据详情,并设置高宽
            BillListHyperLinkClickEvent linkClickEvent = (BillListHyperLinkClickEvent)args.getHyperLinkClickEvent();
            BillList billList = (BillList)args.getHyperLinkClickEvent().getSource();
            String formId = billList.getBillFormId();
            Object pkId = linkClickEvent.getCurrentRow().getPrimaryKeyValue();

            BillShowParameter showParameter = new BillShowParameter();
            showParameter.setFormId(formId);
            showParameter.setPkId(pkId);
            showParameter.setCustomParam("mykey", "hello world"); // 自定义参数,随开发者喜欢,想传什么就传什么
            showParameter.getOpenStyle().setShowType(ShowType.Modal); //打开方式
            if (showParameter.getFormConfig() == null) {
                showParameter.setFormConfig(FormMetadataCache.getFormConfig(formId));
            }
            showParameter.getFormConfig().setHeight(new LocaleString("650"));
            showParameter.getFormConfig().setWidth(new LocaleString("650"));

            getView().showForm(showParameter);
        }

    }


}


4 注册插件

Image_20211008175227.png


效果:

Image_20211008175304.png








赞 29