Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Отображение данных Grid по клику на строку другой Grid (https://javascript.ru/forum/extjs/66167-otobrazhenie-dannykh-grid-po-kliku-na-stroku-drugojj-grid.html)

Sogl 29.11.2016 10:07

Отображение данных Grid по клику на строку другой Grid
 
Всем привет!

В общем, ситуация такая. Есть 2 таблицы, обе работают через REST.
В БД 1я таблица главная, а во 2й есть внешний ключ, ссылающийся на 1ю.

Как сделать, чтобы по клику на строку 1й таблицы параметр id отправлялся во 2ю, т е отображались лишь связанные записи? То же самое касается манипуляций во 2й таблице: при создании новой записи FK должен также заполняться.

Мне кажется, это довольно типовая задача, с которой многие сталкивались, тем не менее поиск мне примеров конкретных не дал.

Можете дать хотя бы верное направление? :)

Pavel M. 29.11.2016 17:02

Может быть такой пример поможет
http://examples.sencha.com/extjs/5.1...g-associations

Sogl 02.12.2016 09:07

То что доктор прописал! :dance:

Вопрос лишь в том, что связанное значение отправляется в параметр как фильтр:
filter	[{"property":"testId","value":2}]


Можно ли выставить свое поле вместо фильтра?
Как-то так:
testId 2

Pavel M. 02.12.2016 11:25

метод getParams свой сделайте,
здесь, кажется, похожий на ваш вопрос http://stackoverflow.com/questions/1...eader/10728630

Sogl 05.12.2016 07:04

Что-то пока непонятно как это сделать. В примере со StackOverflow он начисто удаляет фильтр и вставляет вместо него кастомный параметр, но мне нужно чтобы и фильтры работали тоже.

У обычного фильтра Grid присутствует параметр operator, но у ассоциации его нет.

Пробовал вот такой код на основе переписанной ф-ции encodeFilters:
encodeFilters: function(filters) {
    ...
    var serializedFilter = filter.serialize();

    if (serializedFilter.operator === undefined) {
        this.setExtraParam('testId', 2);
    }

}


Однако мой параметр не появляется. Возможно, требуется какая-то дополнительная инициализация.

Sogl 06.12.2016 09:18

В общем, пока не нашел внятного решения, работаю через фильтр.

Осталось 2 вопроса:
1. Как наложить маску (отключить) GridPanel до момента клика на ассоциированный Grid?
2. Как при создании новой записи во 2й таблице автоматически записывать FK 1й?


Часовой пояс GMT +3, время: 00:12.