Набор данных (dataset) таблицы представляет собой объект JSON, в котором ключами являются наименования столбцов, а значениями – непосредственно сами данные. В общем виде dataset можно представить так:
dataset = { "records": { "rec": [ { "Столбец1": "Значение1", "Столбец2": "Значение2", ... } ] } }
Важно помнить, что ключи – это наименования столбцов таблицы, а не полей БД, описанных в sql-файле гранулы; ключи должны совпадать с идентификаторами (@id) столбцов, описанных в массиве столбцов (col) объекта настроек таблицы (gridsettings):
# Функция загрузки данных def gridData(context, main=None, add=None, filterinfo=None, session=None, elementId=None, sortColumnList=None, firstrecord=None, pagesize=None): ... # Инициализация объекта, содержащего пустой массив записей data = {"records":{"rec":[]}} for rec in cursor.iterate(): # Инициализация объекта для хранения одной записи recDict = {} # Сопоставление значений ключам recDict = {} # Сопоставление значений ключам recDict["~~id"] = <Уникальный идентификатор записи> recDict["Столбец1"] = <Значение 1> recDict["Столбец2"] = <Значение 2> ... recDict["properties"] = "" # Добавление данных в массив data["records"]["rec"].append(recDict) ... # Преобразование записей в XML res = XMLJSONConverter(input = data).parse() return JythonDTO(res, None) # Функция загрузки настроек def gridMeta(context, main=None, add=None, filterinfo=None, session=None, elementId=None): ... # Определяем настройки таблицы и пустой массив заголовков settings = {"gridsettings": "columns": [], "properties": { "@pagesize": "20", "@gridWidth": "900px", ... }, "labels": {} } # Добавляем поля для отображения в gridsettings settings["gridsettings"]["columns"]["col"].append({"@id": "Столбец1", "@width": "200px"}) settings["gridsettings"]["columns"]["col"].append({"@id": "Столбец2", "@width": "50px"}) ... res = XMLJSONConverter(input=settings).parse() return JythonDTO(None, res) Обратите внимание на специальные заголовки столбцов: «~~id» - этот столбец должен содержать уникальный идентификатор записи. Как правило это IDENTITY-поле таблицы БД или строка, содержащая значения составного первичного ключа. Не отображается. «properties» - столбец, содержащий настройки для каждой строки таблицы. Здесь описываются события (event), которые должны происходить при взаимодействии со строками. Не отображается. Событие клика по строке таблицы может выглядеть так: event = { "event": { "@name": "row_single_click", "action": { "main_context": "current", "datapanel": { "@type": "current", "@tab": "current", "element": { "@id": "elId", "add_context": "row_clicked" } } } } }
В приведённом листинге значение атрибута @name определяет тип события. Содержимое action аналогично ключу при описании информационной панели (datapanel) (см. п. 3). Для записей таблицы доступны следующие события:
-
row_single_click (одинарный клик на строку);
-
row_double_click (двойной клик на строку);
-
cell_single_click (одинарный клик на ячейке);
-
cell_double_click (двойной клик на ячейке);
-
row_selection (выбор строки в селекторе справа).