Сетка дерева JqWidgets выдает ошибку при подключении объекта dataAdapter

Я нахожусь в среде AngularJS и пытаюсь заставить работать TreeGrid jqWidgets.

У меня есть dataAdapter, связанный с данными в формате Json, однако сетка отображает только одну строку.

У меня также есть тест treeGrid на той же странице, и с образцами данных, который работает нормально.

Я помещаю окончательную настройку данных Json бок о бок, чтобы попытаться определить, где я иду не так.

Я использовал эту страницу в качестве руководства, чтобы подключить настройки дерева и т. Д. http://www.jqwidgets.com/jquery-widgets-documentation/documentation/angularjs/angularjs.htm

Вот HTML, показывающий директиву jqx treegrid для "плохой" сетки:

<jqx-tree-grid jqx-instance="jqGridHierObj" jqx-settings="vm.jqGridHierSettings"></jqx-tree-grid>

И "плохие" настройки дерева данных Json связали vm.jqGridHierSettings (слишком большой, чтобы разместить в строке):

http://www.bobmazzo.com/grid/TreeGrid_Data_Bad.txt

и вот "хорошая" сетка с данными теста сотрудника:

HTML:

<jqx-tree-grid jqx-instance="jqGridEmpObj" jqx-settings="vm.jqGridEmpSettings"></jqx-grid>  

vm.jqGridEmpSettings Json data:

http://www.bobmazzo.com/grid/TreeGrid_Data_Good.txt

и из моего кода контроллера Angular, фрагмента javascript с привязками данных Json:

Мне нужна помощь, чтобы выяснить, почему "плохая" сетка не работает! И почему он отображает только одну строку, где должна отображаться иерархия данных.

Благодарю.

боб

1 ответ

Решение

Я нашел решение. Вы должны определить "children" как тип массива в объекте "source"; то есть до передачи этого объекта в dataAdapter. Смотрите свойство dataFields ниже:

   var source = {
            dataType: "json",
            dataFields: [
                {
                    "name": "id",
                    "type": "number"
                },
                {
                    "name": "field0",
                    "type": "string"
                },
                {
                    "name": "field1",
                    "type": "number"
                },
                {
                    "name": "field2",
                    "type": "number"
                },
                 {
                     name: 'children',      // MUST DEFINE CHILDREN AS ARRAY TYPE
                     type: 'array'
                 },
            ],
            hierarchy: {
                root: 'children'
            },
            id: 'id',
            localData: myData
        };

   var dataAdapter = new $.jqx.dataAdapter(source);
Другие вопросы по тегам