PowerApp模型驱动的应用程序查找控件PreSearch和addCustomFilter

问题描述

我正在开发模型驱动的PowerApp。我在主要实体中有一个选项列表字段,用户需要在其中选择区域。基于此选择,我希望它可以过滤用户选择适当服务的查找字段中的选项。过滤的目的是仅过滤该区域可用的服务。

我发现我应该能够创建一个Java脚本网络资源,并使用addCustomFilter和PreSearch并使用region字段上的onchange事件触发它来过滤查找列https://docs.microsoft.com/en-us/powerapps/developer/model-driven-apps/clientapi/reference/controls/addcustomfilter

我开发了以下代码。它不会引起任何错误,但也不会过滤查找字段中的数据。我进行了测试,以确保通过添加代码将文本字段的值设置为region字段来拉动region字段,并且该字段可以正常工作,因此我迷失了为什么它不进行过滤以及我在做什么错。

// A namespace defined for SDK sample code
// You should define a unique namespace for your libraries
var Sdk = window.Sdk || {};

// set 'Sdk.setServiceFilter' in the Case form onchange event handler region field
Sdk.setServiceFilter = function (executionContext) {
    
    // get the form context
    formContext = executionContext.getFormContext();
    
    //get region field value
    var region=formContext.getAttribute("cssp_region").getText();

    
    if (region != 'global') {
        //Prepare Condition for the filter
        Sdk.filterServices = function () {

            // Only show services where region is like selected region
            var ServicesFilter = "<filter type='and'><condition attribute='cssp_regiontext' operator='like' value='%" + region + "%' /></filter>";
            formContext.getControl("cssp_service").addCustomFilter(ServicesFilter,"cssp_service");
        }
        
        //Apply filter to the lookup field
        formContext.getControl("cssp_service").addPreSearch(Sdk.filterServices);
    }
}

好吧,我能够将脚本调整为以下内容,并从一个新的查找字段开始(即删除了我已有的现有查找字段,并在表单中添加一个新的查找字段)

SetLookupField = function(executionContext) {
formContext = executionContext.getFormContext();
formContext.getControl("cssp_service").addPreSearch(FilterService);
}

FilterService = function() {
var Region = formContext.getAttribute("cssp_region").getText();
var ServiceFilter = "<filter type = 'and'><condition attribute = 'cssp_regiontext' operator = 'like' value = '%"+Region+"%'/></filter>"
formContext.getControl("cssp_service").addCustomFilter(ServiceFilter);

}

从头开始,此脚本有效,并在单击“所有记录”后开始过滤数据。它不会过滤最近使用的项目。我尝试禁用控件上最近使用的项目,但随后过滤器不再正常工作。就像它没有正确刷新(或应用过滤器)一样,除非我从最近使用的项目导航到“所有记录”视图。相反,它只是不显示任何项目。有什么想法吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...