根据另一个 table 中的数据对过滤后的 Table 进行排序

Sorting a Filtered Table based on data in another table

我有两个 table(SharePoint 列表)。 Employees 包含每个雇员的记录和关于他们的一般信息。 加班记录 包含每个加班班次的记录,包括该班次的员工和日期。因此,Overtime Records 与 Employees 具有多对一的关系。 'Overtime Records'.Employee.Id JOINS TO Employees.ID

我已经成功地在自定义库中放置了一个文本字段,用于计算每个员工使用以下代码工作的加班班次数量。 TimesWorked 是自定义图库中的文本标签对象。

TimesWorked.Text = CountRows(
   Filter(
       'Overtime Records',
       Employee.Id = ThisItem.ID
   )
)

我的问题是让画廊本身按此值排序。这是我尝试编写的 Gallery.Items 属性:

Gallery.Items = Sort(Employees,
    CountRows(
        Filter(
            'Overtime Records',
            Employee.Id = ID
        )
    )
)

这应该按 CountRows() 表达式排序。 ID(全部大写)是 Employee table 中的一个字段。 Employee.Id 是加班记录中的一个字段 table。我怀疑我引用的 ID 字段可能存在歧义问题,因为 Filter 表达式嵌套在 Sort 表达式中。它不允许我指定 Employees.ID;我收到语法错误。

在您可以使用 CountRows 对员工 table 进行排序之前,您需要通过添加一列来使该信息可用 - 不,不向 SharePoint 列表添加一列:)

Power Apps 使您能够使用 AddColumns Function

向 table 添加列

一步一步:

  1. 重命名列函数: RenameColumns(Employees,"ID", "IdentifierEmployees")

  2. AddColumns 函数: AddColumns(RenameColumns(Employees,"ID", "IdentifierEmployees"),"CountOfOvertime", CountRows(Filter('Overtime Records',EmployeeId = IdentifierEmployees)))

  3. SortByColumns 函数: SortByColumns(AddColumns(RenameColumns(Employees,"ID", "IdentifierEmployees"),"CountOfOvertime", CountRows(Filter('Overtime Records',EmployeeId = IdentifierEmployees))),"CountOfOvertime",Descending)

在第一步中重命名列是我发现对我有用的方法,因为如果我有 "EmployeeId = Id"

,过滤器部分将不起作用

希望对您有所帮助