You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在已实现排序的Power Apps Gallery中添加多列搜索功能?

第一步:添加搜索输入控件

在应用中添加一个文本输入框,命名为txtSearch,用于用户输入搜索关键词。

第二步:修改Gallery的Items属性代码

重构原有代码,先统一处理基础过滤和跨列搜索,再执行排序逻辑,避免重复代码。修改后的代码如下:

With(
    {
        // 先筛选符合基础条件的记录,再执行跨列搜索
        FilteredData: Search(
            Filter(KED_DistributorItems, KED_BrandItemId=Blank()),
            txtSearch.Text,
            "DataSource", "MfgrName", "MfgrItemCode", "ProductNumber", "ProductDescription"
            // 此处列出需要支持搜索的列名,可根据实际需求增减
        )
    },
    Switch(
        locSortColumn,
        "DataSource", Sort(FilteredData, DataSource, If(locSortAscending, SortOrder.Ascending, SortOrder.Descending)),
        "MfgrName", Sort(FilteredData, MfgrName, If(locSortAscending, SortOrder.Ascending, SortOrder.Descending)),
        "MfgrItemCode", Sort(FilteredData, MfgrItemCode, If(locSortAscending, SortOrder.Ascending, SortOrder.Descending)),
        "ProductNumber", Sort(FilteredData, ProductNumber, If(locSortAscending, SortOrder.Ascending, SortOrder.Descending)),
        "ProductDescription", Sort(FilteredData, ProductDescription, If(locSortAscending, SortOrder.Ascending, SortOrder.Descending)),
        "Created", Sort(FilteredData, Created, If(locSortAscending, SortOrder.Ascending, SortOrder.Descending)),
        "LastTrans", Sort(FilteredData, LastTransactionDate, If(locSortAscending, SortOrder.Ascending, SortOrder.Descending)),
        "LastSpend", Sort(FilteredData, Last12MonthSpend, If(locSortAscending, SortOrder.Ascending, SortOrder.Descending)),
        // 默认排序规则
        Sort(FilteredData, Created, SortOrder.Descending)
    )
)

代码说明

  • With函数定义中间变量FilteredData,先完成基础过滤(筛选KED_BrandItemId为空的记录),再通过Search函数实现跨列搜索,第三个及后续参数为需要覆盖的搜索列。
  • 后续Switch分支仅对预处理后的FilteredData执行排序,简化代码结构,避免重复编写过滤逻辑。

如果需要搜索数值型或日期型列(如Created、Last12MonthSpend),可替换Search为Filter,将关键词转换为对应类型后匹配,示例如下:

With(
    {
        FilteredData: Filter(
            KED_DistributorItems,
            KED_BrandItemId=Blank() &&
            (
                IsBlank(txtSearch.Text) ||
                DataSource = txtSearch.Text ||
                MfgrName = txtSearch.Text ||
                MfgrItemCode = txtSearch.Text ||
                ProductNumber = txtSearch.Text ||
                ProductDescription = txtSearch.Text ||
                Text(Created, "yyyy-mm-dd") = txtSearch.Text ||
                Text(Last12MonthSpend) = txtSearch.Text
            )
        )
    },
    // 排序逻辑与上方一致
    Switch(
        locSortColumn,
        "DataSource", Sort(FilteredData, DataSource, If(locSortAscending, SortOrder.Ascending, SortOrder.Descending)),
        "MfgrName", Sort(FilteredData, MfgrName, If(locSortAscending, SortOrder.Ascending, SortOrder.Descending)),
        "MfgrItemCode", Sort(FilteredData, MfgrItemCode, If(locSortAscending, SortOrder.Ascending, SortOrder.Descending)),
        "ProductNumber", Sort(FilteredData, ProductNumber, If(locSortAscending, SortOrder.Ascending, SortOrder.Descending)),
        "ProductDescription", Sort(FilteredData, ProductDescription, If(locSortAscending, SortOrder.Ascending, SortOrder.Descending)),
        "Created", Sort(FilteredData, Created, If(locSortAscending, SortOrder.Ascending, SortOrder.Descending)),
        "LastTrans", Sort(FilteredData, LastTransactionDate, If(locSortAscending, SortOrder.Ascending, SortOrder.Descending)),
        "LastSpend", Sort(FilteredData, Last12MonthSpend, If(locSortAscending, SortOrder.Ascending, SortOrder.Descending)),
        Sort(FilteredData, Created, SortOrder.Descending)
    )
)

内容的提问来源于stack exchange,提问作者tjestesjr

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 10:27:40