Таблицы – средство упорядочивания данных, в котором отдельные элементы помещены в ячейки.
Класс, который занимается обработкой таблиц – 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();