Набор данных (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 (выбор строки в селекторе справа).

