Сетка дерева 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);