【问题标题】:Filter Gallery based on Screen1 dropdown selection and then allow search根据 Screen1 下拉选择过滤图库,然后允许搜索
【发布时间】:2017-09-01 20:54:42
【问题描述】:

我的应用程序包含一个由连锁零售店销售的产品列表。我希望每个商店的经理能够在主页上选择他们的商店编号,然后查看他们商店中仅产品的图库列表。

在 Screen1 上,我有 dropdown1,它列出了商店编号,然后是 Button1,应该按下它以导航到 BrowseGallery1,按下拉列表中选择的商店编号进行过滤。

我的数据源是一个名为 Products 的 CDS。有一个名为 StoreNum 的文本字段,其中包含商店编号,例如“111”、“115”等。

我尝试将以下内容放在 Button1 的 OnSelect 中:

Navigate(BrowseScreen1,ScreenTransition.Fade,{StoreNum: 
Dropdown1.Selected.Value}), but that didn't work. It navigates to the 
page, but doesn't filter by StoreNum.

在弄清楚过滤器的情况后,我希望 BrowseScreen1 上的搜索框搜索图库中的一些字段,但仅限于该特定商店。我目前在 BrowseGallery1 的“项目”部分有这个:

Sort(If(IsBlank(TextSearchBox1.Text), Products, Filter(Products, TextSearchBox1.Text in Text(ItemNameWeight))), ItemNameWeight, Ascending)

这似乎可以搜索我的 ItemNameWeight 字段,但不考虑商店编号。

我将不胜感激!

谢谢, 托尼

【问题讨论】:

    标签: powerapps


    【解决方案1】:

    当您在导航选项中将变量传递到屏幕时,它所做的一切只是在该屏幕中创建一个变量供您使用,而不是在浏览屏幕中使用它。

    首先让我们重命名变量,使其不会与列名冲突:

    Navigate(BrowseScreen1,ScreenTransition.Fade,{SelectedStore: Dropdown1.Selected.Value})
    

    现在,让我们更新您画廊的 Items 属性中的函数,使其按 StoreNum 过滤,如下所示:

    Sort(Filter(If(IsBlank(TextSearchBox1.Text), Products, Filter(Products, TextSearchBox1.Text in Text(ItemNameWeight))), SelectedStore = StoreNum), ItemNameWeight, Ascending)
    

    这应该过滤所有具有正确编号的商店,然后按搜索框中的产品过滤。

    如果您想在数据库中搜索更多字段,您可以添加更多过滤器命令。不过,我建议为每种类型的搜索添加一个新屏幕,因为这样可以简化图库中的项目功能。

    干杯。

    【讨论】:

    • 首先感谢一百万。您的建议有效,但我的问题是它仅过滤最初拉下的记录。 (500) 所以结果是,如果我过滤存储 111,画廊是空白的,但是如果我过滤存储 218,它恰好是数据中的第一个存储,那么它会按预期工作。有没有办法在不为所有 29 家商店创建单独的 CDS 的情况下解决这个问题?
    • 我现在意识到,即使我有 29 个单独的 CDS,我仍然只搜索前 500 条记录。这对我根本不起作用。每家商店都有数千种产品。我希望有一个解决方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-16
    • 2012-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多