Power Apps:通过Lookup字段筛选Gallery遇循环引用错误求解决方案
解决Power Apps中Gallery筛选的循环引用问题
你遇到的循环引用问题,根源是在Gallery的Items属性里直接引用了Gallery内部控件(Title1_542)的属性——Gallery的Items决定了控件要显示的内容,而控件内容又反过来影响Items的筛选条件,形成了依赖闭环。
下面是两种可行的解决方法:
方法1:直接在Filter中嵌入Lookup逻辑
不要用Gallery控件的文本值当筛选条件,而是把Title1_542的Lookup公式直接搬到Filter的判断条件里,用数据源本身的字段做匹配。
比如假设你的Title1_542.Text属性是这样的(用PO Database当前记录的字段匹配SQL表):
LookUp(SQL表名, SQL表匹配字段 = ThisItem.PO数据库匹配字段, 要显示的SQL字段)
那Gallery的Items属性就改成:
Filter('PO Database', LookUp(SQL表名, SQL表匹配字段 = PO数据库匹配字段, 要显示的SQL字段) = TextInput2.Text)
举个具体例子:如果PO Database里每条记录有POID字段,SQL表对应OrderID字段,要取SQL表的VendorName,那公式就是:
Filter('PO Database', LookUp(SQL_Orders, OrderID = ThisItem.POID, VendorName) = TextInput2.Text)
方法2:预计算Lookup结果到集合(性能优化)
如果Lookup操作比较频繁,或者SQL表数据量较大,重复执行Lookup会影响性能,建议先把Lookup结果预存在集合里,再筛选集合:
- 在App的
OnStart或者当前屏幕的OnVisible中创建集合:
ClearCollect(colPOWithLookup, AddColumns('PO Database', "LookupResult", LookUp(SQL表名, SQL表匹配字段 = PO数据库匹配字段, 要显示的SQL字段)))
- 将Gallery的
Items属性改成筛选这个集合:
Filter(colPOWithLookup, LookupResult = TextInput2.Text)
这样既避免了循环引用,又减少了重复查询SQL表的次数,提升了运行效率。
内容的提问来源于stack exchange,提问作者Ati
相关产品推荐
相关产品推荐

