web2py - web2py如何在另一个动作/视图上链接网格
问题描述
我想使用网格小部件来探索数据库,然后继续执行另一个可以计算所选行的操作/视图
我目前导出网格结果,将其上传到服务器,然后手动启动一个读取导出文件的新操作/视图。这有点麻烦
我查看了 selectable 属性,它确实允许对选定的行执行一些操作,但必须手动选择它们,并且用户将留在同一个网格视图中。
对 web2py 中的此类功能有任何支持吗?
解决方案
当您使用 执行搜索时SQLFORM.grid
,会在 URL 查询字符串中添加一个keywords
参数,该参数可以在控制器中通过request.vars.keywords
. 在内部,网格用于SQLFORM.build_query(fields, keywords)
将关键字转换为 DAL 查询。因此,重建网格使用的相同查询的策略是将 的值存储request.vars.keywords
在 中session
,然后将该值传递给SQLFORM.build_query()
。例如:
def mygrid():
session.grid_keywords = request.vars.keywords
return dict(grid=SQLFORM.grid(db.mytable))
def other_action():
dbset = db(db.mytable)
if session.grid_keywords:
dbset = dbset(SQLFORM.build_query(db.mytable, session.grid_keywords))
records = dbset.select()
return dict(records=records)
然后在mygrid
页面中,您可以包含一个按钮/链接到other_action
页面,并且在records
那里选择的将匹配当前在网格中的记录(注意,网格分页,所以它只显示记录的子集,但records
在other_action
上面会选择所有匹配的记录,没有分页,这大概是你想要的)。
推荐阅读
- selenium - Serenity BDD / Selenium 测试工作 6 出 10
- javascript - iOS 中的 Expo 计步器有问题,有变化吗?
- python - 使用 pybind11 在 python 中使用 C++ 对象
- docker - 通过jenkins在kubernetes上部署docker镜像的问题
- angular - Edge、IE 和旧版浏览器中的 ViewEncapsulation.ShadowDom 支持
- javascript - 在 WordPress 中调用按钮功能
- keras - 有没有办法在 keras 中合并具有不同样本/批量大小的图层以及关于合并图层的问题
- codeigniter - 如何在不加载视图的情况下将数组从控制器发送到视图
- actions-on-google - 数字交易问题 | Google 是否保证其工作正常才能获得批准?
- angularjs - 选项标记中的值属性始终返回字符串而不是 angularJS 视图中的数字