我想使用网格小部件来浏览数据库,然后继续执行可以在所选行上计算的另一个操作/视图
我目前导出网格结果,将其上传到服务器,然后手动启动一个新的操作/视图,读取导出的文件..这有点麻烦
我查看了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
in上面的other_action
将选择所有匹配的记录,没有分页,这可能是你想要的)。