1. 概述
1.1 版本
Finereport 版本 |
---|
11.0 |
1.2 应用场景
本文主要汇总使用模糊查询时经常出现的问题以及解决方案。
1)下拉框/下拉复选框/下拉树的模糊搜索逻辑请参考:下拉框/下拉复选框/下拉树的模糊搜索。
2)模糊查询的应用场景及实现思路请参考:模糊查询。
2. 常见问题及解决方案
2.1 下拉框数据字典数据量大时有性能问题
问题描述:
下拉框数据量大时,操作卡顿。
原因分析:
下拉框数据为异步加载,一次 500 条,滚动到最后一条时会继续加载接下来的 500 条,因此下拉框一般不会有加载性能问题。但是模糊搜索时,由于需要在全部数据中搜索对应的数据,所以数据量较大时,花费时间也较长,出现性能问题一般都是由于模糊搜索或者数据字典联动导致的。
解决方案:
需要手动优化模糊搜索或者数据字典联动的相关设置。
2.2 下拉框输入文字后,用了拼音来模糊搜索,而不是文字
问题描述:
下拉框输入文字后,用了拼音来模糊搜索,而不是文字。下拉框输入"羊",匹配出来的是发音为"yang"的内容。
原因分析:
部分 win10 自带输入法问题。
解决方案:
更换输入法。
2.3 下拉框模糊查询的选项为空
问题描述:
模板单元格内输入了关键词以后没有选择下拉选项,鼠标点击了其他区域,这个时候再次编辑关键词没有触发模糊查询。
解决方案:
需要点击右侧的小三角展开下拉选项。如下图所示:
2.4 下拉框模糊搜索慢
问题描述:
大数据量时使用下拉框的模糊搜索速度会比较慢。
解决方案:
可以借助文本框先对数据进行一次过滤后,通过控件数据字典联动的方式再使用下拉框进行模糊搜索,从而提高速度。可参考:下拉框模糊搜索慢的解决方案。
2.5 下拉树模糊查询慢
问题描述:
下拉树数据比较多,用模糊查询的时候下拉树控件就会加载不出来。
原因分析:
使用普通分层构建时,在数据层级较多的情况下,模糊搜索会卡顿,搜索时间较长,可能会导致整个报表系统卡死。
注:11.0.3 及以后,对下拉树控件模糊搜索时卡顿的问题做了性能优化,用户可升级使用。
解决方案:
改用极速分层构建的方式,可以一定程度上优化下拉树模糊查询卡顿,并且建议使用一个数据集作为极速分层构建的配置。可参见:下拉树控件极速分层构建示例 。
2.6 下拉树模糊搜索失效
问题描述:
自动构建下拉树模糊搜索失效。
原因分析:
发现有几条数据超过1个父节点,还有几个数据的父节点值跟本身一样。
解决方案:
树数据集数据不对,并且如果使用自动构建需要根节点为空
2.7 输入错误值后的下拉树触发模糊搜索
问题描述:
下拉树的模糊搜索,输入一个不存在的值后,JS 再传一个存在的值,会加载不出选项,手动输入存在值,可以正常加载。
原因分析:
JS 直接传值没触发模糊查询,所以取到的还是上一次的模糊查询结果,通过辅助控件或者 reset 方法触发下。
1)方法一:加一个辅助控件 c,给 c 赋值,并触发 c 的编辑后事件,通过控件之间的联动来取值,如下图所示:
JS 代码如下:
this.options.form.getWidgetByName("c").setValue("1,11,111");
this.options.form.getWidgetByName("c").fireEvent("afteredit");
2)方法二:先 reset 再赋值,点击下拉箭头,选项不会展开,但是取值正常,手动展开,也能看到已经选中了,如下图所示:
JS 代码如下:
this.options.form.getWidgetByName("b").reset();
this.options.form.getWidgetByName("b").setValue("1,11,111");