Таблицы – средство упорядочивания данных, в котором отдельные элементы помещены в ячейки.
Класс, который занимается обработкой таблиц – wAjaxGrid (main/classes/wAjaxGrid.class.php).
В качестве примера рассмотрим фрагмент меню Настройки – Таблицы – Системные таблицы – Настройки объектов. В правой части панели управления отобразятся два фрейма – в левом фрейме Таблицы отображается древовидная структура таблиц (разновидность объектов), а в правом фрейме – список (таблица) объектов выбранного типа (настройки объектов).
Под таблицей – ссылки постраничной навигации.
Справа от названия таблицы – кнопки для вызова меню, обновления информации и добавления новой записи в таблицу. Первая из кнопок открывает меню, содержащее следующие опции:
Справа от названия таблицы – кнопки для активации следующих действий:
Асинхронные запросы класса wAjaxGrid. На клиентской стороне реагирует на действия пользователя jquery.wajaxgrid (main/js/jquery.wajaxgrid.js). Этому скрипту класс wAjaxGrid (метод show()) посылает сформированный xml-файл, который описывает, сколько колонок, строк и какие данные должны быть в таблице, а также дается стилевое оформление таблицы.
Если данных нет, пользователю выводится сообщение "Нет данных"($parser->gt('no_data_found')).
Если пользователь совершает какое-либо действие из перечисленных в переключателе switch($action) метода show() класса wAjaxGrid, интерфейс меняется соответственно запрошенным данным.
Следует отметить, что xml, описывающий таблицу, может формироваться не на лету, а лежать в базе данных (таблица sys_objtypes, поле scripts). В этом случае разбором xml-документа занимается метод setFieldsFromSchema() базового класса wPrototype.
Пример простой таблицы (данные из массива):
// To use the proper language library
$fn = __FILE__;
// Create new instance of the wAjaxGrid class
include_once(SYS_BASE_PATH.'main/classes/wajaxgrid.class.php');
$w = new wAjaxGrid();
$w->container = 'grid_arrsimple';
$w->pagelen = 5;
// Set column names
$w->colnames = $parser->gt('id', $fn).','.$parser->gt('name', $fn).','.$parser->gt('continent', $fn).','.$parser->gt('region', $fn).','.$parser->gt('capital', $fn);
// Set data array
$w->addData(array(1, 'Aruba', 'North America', 'Caribbean', 'Abu Dhabi'));
$w->addData(array(2, 'Afghanistan', 'Asia', 'Southern and Central Asia', 'Kabul'));
$w->addData(array(3, 'Angola', 'Africa', 'Central Africa', 'Luanda'));
$w->addData(array(4, 'Anguilla', 'North America', 'Caribbean', 'The Valley'));
$w->addData(array(5, 'Albania', 'Europe', 'Southern Europe', 'Tirana'));
$w->addData(array(6, 'Andorra', 'Europe', 'Southern Europe', 'Andorra la Vella'));
$w->addData(array(7, 'Netherlands Antilles', 'North America', 'Caribbean', 'Willemstad'));
$w->addData(array(8, 'United Arab Emirates', 'Asia', 'Middle East', 'Abu Dhabi'));
$w->addData(array(9, 'Argentina', 'South America', 'South America', 'Buenos Aires'));
$w->addData(array(10, 'Armenia', 'Asia', 'Middle East', 'Yerevan'));
$w->addData(array(11, 'American Samoa', 'Oceania', 'Polynesia', 'Fagatogo'));
$w->addData(array(12, 'Antigua and Barbuda', 'North America', 'Caribbean', 'Saint John´s'));
$w->addData(array(13, 'Australia', 'Oceania', 'Australia and New Zealand', 'Canberra'));
$w->addData(array(14, 'Austria', 'Europe', 'Western Europe', 'Wien'));
$w->addData(array(15, 'Azerbaijan', 'Asia', 'Middle East', 'Baku'));
$w->addData(array(16, 'Burundi', 'Africa', 'Eastern Africa', 'Bujumbura'));
$w->addData(array(17, 'Belgium', 'Europe', 'Western Europe', 'Bruxelles'));
$w->addData(array(18, 'Benin', 'Africa', 'Western Africa', 'Porto-Novo'));
$w->addData(array(19, 'Burkina Faso', 'Africa', 'Western Africa', 'Ouagadougou'));
$w->addData(array(20, 'Bangladesh', 'Asia', 'Southern and Central Asia', 'Dhaka'));
$w->addData(array(21, 'Bulgaria', 'Europe', 'Eastern Europe', 'Sofija'));
$w->addData(array(22, 'Bahrain', 'Asia', 'Middle East', 'al-Manama'));
$w->addData(array(23, 'Bahamas', 'North America', 'Caribbean', 'Nassau'));
// Print the grid
$w->Show();