Таблицы и Ext.grid.Panel

Ext.grid.Panel и отображение данных

Для отображения и управления данными в виде таблицы в ExtJS 4 предназначен такой мощный элемент управления, как Ext.grid.Panel. Разберем на примере простейшее отображение данных в данном элементе.

Итак, сначала определим сами данные. Это могут быть к примеру данные, находящиеся в формате json на сервере. Пусть это будет файл users.json следующего содержания:

{
	"success": true,
	"users": [{
        "userID": 1,
        "name": "Вася",
		"surname": "Иванов",
        "date": '10/08/1991',
        "email": 'vasiv@mail.ru',
		"married": false
    }, {
        "userID": 2,
        "name": "Петя",
		"surname": "Федоров",
        "date": '03/08/1993',
        "email": 'petfed@yandex.ru',
		"married": true
    }, {
        "userID": 3,
        "name": "Вова",
		"surname": "Кузнецов",
        "date": '11/07/1989',
        "email": 'vok@mail.ru',
		"married": false
    }, {
        "userID": 4,
        "name": "Саша",
		"surname": "Сидоров",
        "date": '05/08/1991',
        "email": 'vvvs@mail.ru',
		"married": true
    }]
}

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

Ext.define('User', {
           extend: 'Ext.data.Model',

			idProperty: 'userID',

            fields: [{
                name: 'userID',
                type: 'int'
			}, {
                name: 'name',
                type: 'string'
            }, {
                name: 'surname',
                type: 'string'
            }, {
                name: 'date',
                type: 'date'
            }, {
                name: 'email',
                type: 'string'
            }, {
                name: 'married',
                type: 'bool'
            }]
      });

       var store = Ext.create('Ext.data.Store', {
                    model: 'User',
                    autoLoad: true,
					proxy: {
							type: 'ajax',
							url: 'users.json',
							reader: {
								type: 'json',
								root: 'users'
							}
				}
        });

Хранилище store будет автоматически загружать данные из файла users.json. Теперь свяжем сам элемент Ext.grid.Panel с хранилищем:

Ext.create('Ext.grid.Panel', {
		title: 'Пользователи',
		height: 200,
		width: 400,
		store: store,
		columns: [{
			header: 'Имя',
			dataIndex: 'name'
		}, {
			header: 'Фамилия',
			dataIndex: 'surname'
		}, {
			header: 'Дата рождения',
			dataIndex: 'date',
			xtype:'datecolumn',
			format: 'd/m/Y',
			flex:1
		}, {
			header: 'E-mail',
			dataIndex: 'email',
			flex:1
		}, {
			header: 'Женат/Замужем',
			dataIndex: 'married',
			flex:1
		}],
		renderTo: Ext.getBody()
	});

Итак, элемент Ext.grid.Panel представляет собой панель в виде таблицы. Чтобы связать Ext.grid.Panel с хранилищем, устанавливаем свойство store. Затем с помощью свойства columns определяем массив столбцов, которые будут отображать данные из хранилища.

Для каждого столбца устанавливаются свойство header, которое обозначает название столбца, выводимое на веб-странице, и свойство dataIndex, которое в качестве значения принимает свойство модели, значение которого будет отображаться в данном столбце.

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

Также надо отметить, что необязательно создавать столбцы для всех свойств модели. В итоге, мы получим следующий вывод:

Отображение табличных данных в ExtJS 4
comments powered by Disqus
Изучаем Ext JS 4
↑ Выше
Содержание
    Поддержать сайт на родительском проекте КГБ