微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?