问题描述
Spotfire中的筛选行转换可以对数据进行筛选后生成新表,但有时筛选条件变更时,新表的数据不会自动更新,例如,原表为以下数据:
ID |
---|
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
建立两个输入框属性:max & min,然后筛选行条件设置为:
([ID]>=DocumentProperty("min")) and ([ID]<=DocumentProperty("max"))
假设min 和 max输入9和15,可以生成如下新表:
ID |
---|
9 |
10 |
11 |
12 |
13 |
14 |
15 |
但当min和max的值改变时,新表不会自动发生变化,甚至增加一个刷新按钮(IronPython脚本:table.Refresh(),table为输入参数,选择对应数据表),结果仍然不变。
原因分析:
经过测试,发现筛选行生成新表刷新方式默认为自动刷新,且激活刷新的条件为原表数据发生变化,但本案例中,min和max值发生变化时,原表数据并没有发生变化,因此新表也不会自动更新
解决方案
方法1. 原表中添加计算列,将min和max值的变化映射到表中,例如可以将筛选行条件直接计算得到valid列(注意属性的引用方式和筛选行不同),再用这一列的值进行筛选(也可以不用,维持原来的筛选行条件,效果不变),可实现自动刷新。
方法2. 将更新方式改为手动(取消选中自动更新复选框),再用刷新按钮刷新,可以实现手动刷新