PowerApps DataTable函数优化:过滤零值行并添加总计行
PowerApps DataTable 优化方案
一、过滤掉「Recorded Time」为0的行
直接在现有Filter函数中添加过滤条件即可(RemoveIf是用于修改数据源的函数,不适合在DataTable的Items属性中使用,这也是你之前报错的原因)。修改后的Items公式如下:
Sort( Filter( October_Timesheets_1D, WinTeam_ID = employee_search.Text && DateValue(Date_Formatted) >= ddTimeSelection.Selected.StartDate && DateValue(Date_Formatted) <= ddTimeSelection.Selected.EndDate && 'Recorded Time' <> 0 // 新增条件:排除记录时间为0的行 ), Date, SortOrder.Descending )
二、添加「Recorded Time」列总计行
PowerApps的DataTable控件没有内置总计行功能,可通过以下两种方式实现:
方式1:使用集合(推荐,性能更优)
- 在屏幕的
OnVisible属性中,将过滤并排序后的数据集存入集合:
ClearCollect( FilteredTimesheets, Sort( Filter( October_Timesheets_1D, WinTeam_ID = employee_search.Text && DateValue(Date_Formatted) >= ddTimeSelection.Selected.StartDate && DateValue(Date_Formatted) <= ddTimeSelection.Selected.EndDate && 'Recorded Time' <> 0 ), Date, SortOrder.Descending ) )
- 将DataTable的
Items属性改为FilteredTimesheets。 - 在DataTable下方添加一个Label控件,设置其
Text属性为:
"Total Hours: " & Sum(FilteredTimesheets, 'Recorded Time')
方式2:直接计算(无需集合)
如果不想用集合,可直接在Label中写计算逻辑,Label的Text属性设置为:
"Total Hours: " & Sum( Filter( October_Timesheets_1D, WinTeam_ID = employee_search.Text && DateValue(Date_Formatted) >= ddTimeSelection.Selected.StartDate && DateValue(Date_Formatted) <= ddTimeSelection.Selected.EndDate && 'Recorded Time' <> 0 ), 'Recorded Time' )
内容的提问来源于stack exchange,提问作者next_Bill
相关产品推荐
相关产品推荐

