Javascript-форум (https://javascript.ru/forum/)
-   ExtJS (https://javascript.ru/forum/extjs/)
-   -   Возможно ли динамическое изменение шаблона rowBodyTpl? (https://javascript.ru/forum/extjs/31152-vozmozhno-li-dinamicheskoe-izmenenie-shablona-rowbodytpl.html)

SemKos 28.08.2012 17:23

Возможно ли динамическое изменение шаблона rowBodyTpl?
 
Приветствую вас!
Имеется grid, в который выводится из базы некая таблица. К grid-у прикручен плагин rowexpander, у которого в качестве параметра имеется rowBodyTpl. С его помощью хотелось бы отобразить не только данные из изначальной таблицы, но и информацию из связанной с ней. Загвоздка в том, что каждой строке первой таблицы может соответствовать разное кол-во строк из связанной. Например, первая таблица - это список покупателей, а вторая - список книг, которые были куплены этими покупателями. Так вот, выбираем мы покупателя и получаем список книг, купленных этим покупателем. Загвоздка, ессесно, не в получении инфы из базы, а в том, чтобы заставить rowexpander отображать разное количество дивов в зависимости от числа купленных книг. Предполагалось сделать что-то типа такого:
function tplBooks(customer){
books = количество книг, купленных выбранным покупателем;
if (books == 0) {ничего не добавляем} else {
var n=1;
while (n<books){
return '<div class = tpl><a href="file-download.php?id='+customer+'>Книга '+n+'</a></div>,'
}
}


Два дня попыток подсунуть подобную конструкцию (да вообще любую функцию) rowexpander-у наводят меня на мысль, что я использую неподходящий компонент.... Или тот? Тогда - как????
:help:

DjDiablo 31.08.2012 08:58

понятия не имею что делает плагин expander но за его отрисовку отвечает метод renderer, его тебе и нужно переписать так как тебе надо в своём классе.

//вот как работает сейчас
renderer: function(value, metadata, record, rowIdx, colIdx) {
        if (colIdx === 0) {
            metadata.tdCls = 'x-grid-td-expander';
        }
        return '<div class="x-grid-row-expander"> </div>';
  },


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