Набор данных (dataset)

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