Показать сообщение отдельно
  #3 (permalink)  
Старый 24.11.2011, 15:16
Новичок на форуме
Отправить личное сообщение для Warlus Посмотреть профиль Найти все сообщения от Warlus
 
Регистрация: 24.11.2011
Сообщений: 4

Нет я хочу, чтобы в гриде городов был столбец в котором бы было указано наименование района к которому этот город относится. Причем в моделе данных города хранится только идентификатор этого района. Таким образом требуется как-то подгрузить по идентификатору района название этого района, чтобы оно отображалось в этом столбце.

Я предположил, что в сущностях ExtJS нужно создать две модели данных "Районы" и "Города", и задать между ними связь( association ), типа belongsTo (каждый город относится к одному району). Далее я создал очень простые store соответственно для городов и для районов:
Ext.define('Street.store.AreaStore', {
	extend: 'Ext.data.Store',
	storeId: 'AreaStore',
	
	model: 'Street.model.AreaModel',
});

Ext.define('Street.store.TownStore', {
	extend: 'Ext.data.Store',
	storeId: 'TownStore',
	
	model: 'Street.model.TownModel',
});


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

скорей всего нужно использовать свойство "renderer" при инициализации колонки "Район" и в нем задать функцию, которая каким, то образом извлекет нужные данные. Что-то типа:
columns:[...

{ header: 'Район', 
		  dataIndex: 'area_id', 
		  renderer: function(value, meta, model) {
		  	return model.getArea(function(area){
		  		return area.get('name');
		  		});
		  	}
}

... ]


Но так не работает, печатает в столбце "function () {return this.constructor.apply (this, arguments);}". Вообщем ломаю голову...
Ответить с цитированием