SAPUI5:如何在路由匹配时重置SmartTable的P13N对话框?
解决SmartTable切换视图时P13N筛选条件残留的问题
这问题我之前做UI5项目时也碰到过,确实有点闹心——SmartTable的个性化(P13N)设置默认会保留全局状态,切换到新的对象条目时不会自动重置。不过咱们可以通过在路由匹配事件里调用专门的方法来解决,具体步骤如下:
核心解决方案:调用resetPersonalization方法
在目标视图的控制器中,找到(或注册)onRouteMatched事件处理器,在里面获取SmartTable实例并调用resetPersonalization方法,这个方法会一次性重置所有P13N设置,包括筛选条件、排序规则、列显示状态等。
代码示例
onInit: function() { // 先注册路由匹配事件(如果还没注册的话) const oRouter = this.getOwnerComponent().getRouter(); oRouter.getRoute("YourTargetRouteName").attachMatched(this.onRouteMatched, this); }, onRouteMatched: function(oEvent) { // 获取SmartTable实例,替换成你自己的表格ID const oSmartTable = this.getView().byId("idYourSmartTable"); if (oSmartTable) { // 重置所有个性化设置 oSmartTable.resetPersonalization(); // 可选:如果需要立即刷新表格数据,可以加上这一行 oSmartTable.rebindTable(); } }
额外说明
- 如果你只想单独重置筛选条件,而保留其他P13N设置(比如列排序),可以通过SmartTable拿到底层的Table实例,再调用
clearFilters()方法:const oInnerTable = oSmartTable.getTable(); oInnerTable.clearFilters(); - 注意要确保SmartTable已经完成初始化,所以代码里加了
if (oSmartTable)的判断,避免视图还没渲染完成时调用方法出错。
内容的提问来源于stack exchange,提问作者MJBZA
相关产品推荐
相关产品推荐

