При выполнении поиска с помощью 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
выше выберет все совпадающих записей, без нумерации страниц, что, вероятно, и нужно).