Powerapps:将搜索文本分为单个字符串,现在我只需要在图库中显示包含字符串之一的项目

时间:2019-02-18 16:17:47

标签: search split datatables powerapps powerapps-formula

我已经在powerapps中创建了一个表,该表从文本输入框中收集各个字符串。该表正在运行,当用户在文本框中键入内容时,它将在该列下方创建新项目。现在,我试图过滤图库以仅显示与表中任何值匹配的项目。

我正在尝试按多行文本字段进行过滤。如果文本块中的单个单词匹配,我希望显示它。该表最终将从视图中隐藏,但是正如我现在所看到的,每当在文本框中键入单词,然后用空格分隔时,它都会在表中创建一个新条目。

这是工作表上项目的代码。

AddColumns(Split(SearchBox.Text," "),"Words",Result)

这是我尝试使用的画廊代码。

Filter(Projects,Details in DataTable1.Result)

项目是我的数据的名称,详细信息是我要搜索的带有多行文本的列的名称。

我收到一条错误消息,说“结果”名称无效。我找不到要在Filter代码的第二部分中放入的表达式。实际结果,输入单词时我的画廊什么也不显示。预期的结果我希望它显示与“详细信息”和搜索框中至少一个单词匹配的所有项目。

谢谢你, 瑞安·斯图尔特(Ryan Stewart)

1 个答案:

答案 0 :(得分:1)

没有直接的方法可以完成您想要的事情,但是我们可以创建一个表达式来达到目的。将会遵循以下原则:

Filter(
    Projects,
    Sum(
        ForAll(
            Filter(Split(SearchBox.Text, " "), Len(Trim(Result)) > 0),
            If(Result in Details, 1, 0)),
        Value) > 0)

让我们经历一下。此子表达式:

Filter(Split(SearchBox.Text, " "), Len(Trim(Result)) > 0)

splits向下搜索到文本框中的单词,并且还删除了如果单词之间有两个空格或前导或尾随空格将得到的空单词。

然后,for all个单词被拆分,我们看到if该单词包含在列表的Details列中;如果是这样,我们得到的值为1,否则为0。 ForAll子表达式的结果是与Projects中的每个项目相对应的值的列表。然后,我们Sum这些值。如果详细信息中包含搜索框中的任何单词,则总和将大于0。

最后,我们可以根据该值过滤Projects,这应该会为您提供所需的结果。