Polarion表格Widget更新问题:点击按钮能否修改查询并刷新?
修改Polarion表格Widget查询并刷新的解决方案
嘿,我明白你遇到的问题了——直接修改DOM里的查询内容确实不会让表格Widget自动刷新,因为Polarion的Widget是基于内部状态渲染的,DOM只是它的输出结果,改DOM不会同步到Widget的核心配置里。不过别担心,咱们可以用Polarion官方提供的JavaScript API来实现点击按钮更新查询并刷新表格的需求!
具体步骤和代码示例
首先,你需要先给你的表格Widget设置一个唯一ID:在Polarion页面编辑模式下,找到表格Widget的配置项,设置它的ID(比如my-task-table),这样我们才能通过API定位到它。
然后替换你的代码为下面的版本:
<button id="target">Test</button> <script> $("#target").click(function() { // 定位到表格Widget实例 const tableWidget = polarion.components.getComponentById("my-task-table"); if (!tableWidget) { console.warn("找不到目标表格Widget,请检查ID是否正确"); return; } // 根据页面上下文构造新的查询语句 let newQuery; if (!pageContext.taskIds.equals("")) { newQuery = `id:(${pageContext.TaskList}) AND NOT status: "closed"`; } else { newQuery = "NOT*.*"; } // 更新Widget的查询参数 tableWidget.setParameter("query", newQuery); // 触发Widget刷新,加载新数据 tableWidget.refresh(); }); </script>
为什么这个方法有效?
polarion.components.getComponentById():这是Polarion内置的API,用来获取页面上的Widget实例,比直接操作DOM靠谱多了setParameter("query", newQuery):直接修改Widget内部的配置参数,这才是真正改变查询逻辑的地方refresh():调用Widget的刷新方法,让它重新执行新的查询并渲染结果
注意事项
- 确保你设置的Widget ID和代码里的
my-task-table完全一致,大小写也要匹配 - 确认
pageContext里的taskIds和TaskList属性是正确的——如果页面上下文里的变量名有变化,要对应修改 - 这段代码需要放在Polarion的HTML Widget里,确保在页面加载完成后能正常访问到
polarion对象和Widget实例
内容的提问来源于stack exchange,提问作者Der Altmann
相关产品推荐
相关产品推荐

