web2py如何在另一个动作/视图上链接网格

时间:2018-09-04 14:05:32

标签: web2py

我想使用网格小部件来浏览数据库,然后继续执行可以对选定行进行计算的其他操作/视图

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

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

web2py是否支持这种功能?

1 个答案:

答案 0 :(得分:1)

使用SQLFORM.grid执行搜索时,会将keywords参数添加到URL查询字符串,可以通过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将选择 all 个匹配记录,没有分页,这大概是您想要的。