PowerApps如何为Gallery添加4种筛选?按SharePoint ID搜索报错如何解决
PowerApps Gallery控件多筛选规则集成问题
需求
需在PowerApps的Gallery控件中实现4种筛选规则:
- 按设备状态下拉框筛选
- 按位置下拉框筛选
- 按创建日期阈值筛选
- 按SharePoint列表ID搜索筛选
问题说明
原有整合ID搜索功能的代码运行报错,移除Search相关代码后,位置、状态、日期三类筛选均可正常运行,核心问题为无法正确集成ID搜索筛选功能。
原整合搜索功能的错误代码
SortByColumns( Search( Filter( Switch( true; Dropdown_Equipo_Estado_2.SelectedText.Value <> "Todos"; Filter( TRASLADO_EQUIPO; ( LOCALIZACION_ORIGEN_ID = Dropdown_Equipo_Localizacion_2.Selected.ID || LOCALIZACION_DESTINO_ID = Dropdown_Equipo_Localizacion_2.Selected.ID) && ESTADO = Dropdown_Equipo_Estado_2.SelectedText.Value ); Dropdown_Equipo_Estado_2.SelectedText.Value = "Todos"; Filter( TRASLADO_EQUIPO; ( LOCALIZACION_ORIGEN_ID = Dropdown_Equipo_Localizacion_2.Selected.ID || LOCALIZACION_DESTINO_ID = Dropdown_Equipo_Localizacion_2.Selected.ID) ); Filter( TRASLADO_EQUIPO; ( LOCALIZACION_ORIGEN_ID = Dropdown_Equipo_Localizacion_2.Selected.ID || LOCALIZACION_DESTINO_ID = Dropdown_Equipo_Localizacion_2.Selected.ID) ) ); FECHA_CREACION >= DatePicker1_1.SelectedDate ); TextInput6.Text; "ID"); "ID"; Ascending)
移除Search后的可运行参考代码
SortByColumns( Filter( Switch( true; Dropdown_Equipo_Estado_2.SelectedText.Value <> "Todos"; Filter( TRASLADO_EQUIPO; ( LOCALIZACION_ORIGEN_ID = Dropdown_Equipo_Localizacion_2.Selected.ID || LOCALIZACION_DESTINO_ID = Dropdown_Equipo_Localizacion_2.Selected.ID) && ESTADO = Dropdown_Equipo_Estado_2.SelectedText.Value); Dropdown_Equipo_Estado_2.SelectedText.Value = "Todos"; Filter( TRASLADO_EQUIPO; ( LOCALIZACION_ORIGEN_ID = Dropdown_Equipo_Localizacion_2.Selected.ID || LOCALIZACION_DESTINO_ID = Dropdown_Equipo_Localizacion_2.Selected.ID)); Filter( TRASLADO_EQUIPO; ( LOCALIZACION_ORIGEN_ID = Dropdown_Equipo_Localizacion_2.Selected.ID || LOCALIZACION_DESTINO_ID = Dropdown_Equipo_Localizacion_2.Selected.ID))); FECHA_CREACION >= DatePicker1_1.SelectedDate ); "ID";Ascending)
解决方案
报错原因
PowerApps的Search函数仅支持对文本类型字段进行搜索,SharePoint列表原生ID字段为数字类型,直接调用会触发报错。
修复后完整代码
将ID转换为文本类型后用Filter实现匹配效果,同时兼容搜索框为空的场景,完整可运行代码如下:
SortByColumns( Filter( Switch( true; Dropdown_Equipo_Estado_2.SelectedText.Value <> "Todos"; Filter( TRASLADO_EQUIPO; ( LOCALIZACION_ORIGEN_ID = Dropdown_Equipo_Localizacion_2.Selected.ID || LOCALIZACION_DESTINO_ID = Dropdown_Equipo_Localizacion_2.Selected.ID) && ESTADO = Dropdown_Equipo_Estado_2.SelectedText.Value ); Dropdown_Equipo_Estado_2.SelectedText.Value = "Todos"; Filter( TRASLADO_EQUIPO; ( LOCALIZACION_ORIGEN_ID = Dropdown_Equipo_Localizacion_2.Selected.ID || LOCALIZACION_DESTINO_ID = Dropdown_Equipo_Localizacion_2.Selected.ID) ); Filter( TRASLADO_EQUIPO; ( LOCALIZACION_ORIGEN_ID = Dropdown_Equipo_Localizacion_2.Selected.ID || LOCALIZACION_DESTINO_ID = Dropdown_Equipo_Localizacion_2.Selected.ID) ) ); FECHA_CREACION >= DatePicker1_1.SelectedDate && (IsBlank(TextInput6.Text) || StartsWith(Text(ID), TextInput6.Text)) ); "ID"; Ascending )
内容的提问来源于stack exchange,提问作者babyArley
相关产品推荐
相关产品推荐

