首页 > 解决方案 > web2py如何在另一个动作/视图上链接网格

问题描述

我想使用网格小部件来探索数据库,然后继续执行另一个可以计算所选行的操作/视图

我目前导出网格结果,将其上传到服务器,然后手动启动一个读取导出文件的新操作/视图。这有点麻烦

我查看了 selectable 属性,它确实允许对选定的行执行一些操作,但必须手动选择它们,并且用户将留在同一个网格视图中。

对 web2py 中的此类功能有任何支持吗?

标签: 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那里选择的将匹配当前在网格中的记录(注意,网格分页,所以它只显示记录的子集,但recordsother_action上面会选择所有匹配的记录,没有分页,这大概是你想要的)。


推荐阅读