移动表单引用单据列表控件添加过滤原创
金蝶云社区-wyjCode
wyjCode
2人赞赏了该文章 949次浏览 未经作者许可,禁止转载编辑于2023年01月12日 15:34:42

移动表单引用单据列表控件添加过滤,在beforeBindData事件中添加过滤

@Override
public void beforeBindData(EventObject e) {
   super.beforeBindData(e);
   BillList billList = this.getView().getControl("单据列表标识");
   billList.setFilter(qFilter);
}

当数据过多,一个页面加载不完,出现可滑动时。向下滑动数据时,回触发setListRealPageCount指令。

image.png

该指令在计算总数据条数时,没有把beforeBindData事件中设置的qFilter条件加上,导致实际数据条数和返回的数据不一致,在向下划动时,由于返回的数据条数比实际的大,导致前端实际数据加载展示完成了还会继续向后端请求数据加载展示。不断的重复加载数据,直到加载的数据条数等于返回的总数据条数。

image.png

解决这一问题方案:

实现SetFilterListener接口
@Override
public void initialize() {
    super.initialize();
    BillList billList = this.getView().getControl("单据列表控件标识");
    billList.addSetFilterListener(this);//添加filter监听
}

/**
* 添加过滤条件
*/
@Override
public void setFilter(SetFilterEvent paramSetFilterEvent) {
    switch (((BillList) paramSetFilterEvent.getSource()).getKey()) {
        case "单据列表控件标识":
            QFilter qFilter = new QFilter("字段标识", QCP.equals, 值);
            paramSetFilterEvent.addCustomQFilter(qFilter);
            break;
        default:
    }
}



赞 2