PowerApps中对库排序后如何重置为默认排列状态
Power Apps库控件重置默认排序实现方案
完全可以实现。你当前的逻辑仅配置了升序、降序两种排序分支,未给默认排序留状态位,调整变量规则和Items属性公式即可达到效果,以下分两种场景给出改法:
场景1:仅保留「默认排序、CGPA降序」两个状态
不需要升序逻辑,直接复用你现有的布尔型sortGrade变量即可,改动最小:
- 排序按钮的
OnSelect属性无需调整,保持原有代码:
UpdateContext({sortGrade: !sortGrade})
初始进入页面时sortGrade默认值为false,对应默认排序状态;点击按钮切换为true时触发CGPA降序,再次点击切回false即回到默认顺序。
- 修改库控件的
Items属性为以下公式:
If( sortGrade, // 变量为true时,按CGPA降序排列 SortByColumns( Search(Table1, TextInputSearch_3.Text, "Name2"), "Cumulative Grade Point Average (CGPA)/Grade", Descending ), // 变量为false时,直接返回搜索结果的原始默认顺序 Search(Table1, TextInputSearch_3.Text, "Name2") )
注:你原有公式里套的
Filter函数没有传入任何筛选条件,属于冗余逻辑,上述公式已经直接移除。
场景2:保留「默认排序→CGPA升序→CGPA降序」三状态循环
如果需要同时保留升序、降序、默认排序三种状态,布尔型变量无法满足三状态存储需求,需要把变量改成文本类型做状态轮转:
- 首先在当前屏幕的
OnVisible属性添加初始化变量代码,进入屏幕时默认处于无排序状态:
UpdateContext({sortStatus: "default"})
- 修改排序按钮的
OnSelect属性,实现点击时三个状态循环切换:
Switch( sortStatus, "default", UpdateContext({sortStatus: "asc"}), "asc", UpdateContext({sortStatus: "desc"}), "desc", UpdateContext({sortStatus: "default"}) )
- 修改库控件的
Items属性,通过With函数抽离公共搜索逻辑,避免重复代码,同时对应不同状态返回对应排序结果:
With( { BaseData: Search(Table1, TextInputSearch_3.Text, "Name2") }, Switch( sortStatus, "asc", SortByColumns(BaseData, "Cumulative Grade Point Average (CGPA)/Grade", Ascending), "desc", SortByColumns(BaseData, "Cumulative Grade Point Average (CGPA)/Grade", Descending), BaseData ) )
注意:此处的默认排序为数据源返回的原生顺序,若你使用的数据源配置了默认视图排序规则(如SharePoint列表视图排序),结果会直接继承视图的排序逻辑;无额外配置的数据源默认一般按创建ID升序返回结果。
内容的提问来源于stack exchange,提问作者kankerino
相关产品推荐
相关产品推荐

