web2py как связать сетку в другом действии / просмотре - PullRequest
0 голосов
/ 04 сентября 2018

Я бы хотел использовать виджет сетки для исследования базы данных, а затем перейти к другому действию / представлению, которое может вычислять выбранные строки

В настоящее время я экспортирую результат сетки, загружаю его на сервер, затем вручную запускаю новое действие / представление, которое читает экспортированный файл .. что немного громоздко

Я посмотрел на атрибут selectable, он позволяет выполнять некоторые действия с выбранными строками, но они должны быть выбраны вручную, и пользователь останется в том же виде сетки.

Есть ли поддержка такой функции в web2py?

1 Ответ

0 голосов
/ 05 сентября 2018

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

...