Скорбь с сеткой дерева extJS4, используя пользовательскую модель и асинхронную загрузку - PullRequest
0 голосов
/ 23 февраля 2012

Я просто не могу заставить дерево работать и работать.Я определил модель, магазин и сетку деревьев (как показано ниже).Сетка дерева показывается внутри цели, данные загружаются асинхронно (проверено с помощью fiddler, две строки возвращены), однако сетка дерева просто показывает две строки с пустыми ячейками.

Я попытался отладить, и корневой узел хранилища действительно имеет дваДочерние узлы, данные модели находятся в дочернем свойстве raw (за исключением некоторых полей, таких как leaf и iconCls, которые также находятся в свойстве data), однако сетка дерева показывает две пустые строки, несмотря на то, что dataIndex указывает на правильное поле модели.

Это похоже на то, что сетка дерева не может найти поле, определенное моделью?!?

Вот источник (я использую изолированную программную среду, потому что я интегрирую это в salesforce vforce, поля слияния salesforce {!} также действительны и отображаются правильно)

Ext4.onReady(function() {

    var target = '{!$Component.childBlock.childTreeDiv}';


    Ext4.define('ConfigurationItem', {
        extend: 'Ext4.data.Model',
        fields: [
            {
            id: 'id',
            type: 'string'},
        {
            id: 'name',
            type: 'string'},
        {
            id: 'recordType',
            type: 'string'},
        {
            id: 'ciName',
            type: 'string'},
        {
            id: 'alias',
            type: 'string'},
        {
            id: 'model',
            type: 'string'},
        {
            id: 'status',
            type: 'string'},
        {
            id: 'description',
            type: 'string'},
        {
            id: 'leaf',
            type: 'bool'},
        {
            id: 'iconCls',
            type: 'string'}
        ]
    });

    var store = Ext4.create('Ext4.data.TreeStore', {
        model: 'ConfigurationItem',
        root: {
            nodetype: 'async',
            id: '{!CI__c.Id}',
            expanded: true
        },
        proxy: {
            type: 'ajax',
            url: 'json_CIChildren',
            reader: {
                type: 'json',
                root: 'children'
            }
        }
    });

    tree = Ext4.create('Ext4.tree.Panel', {
        width: document.getElementById(target).offsetWidth,
        autoHeight: true,
        title: 'Child Configuration Items',
        collapsible: true,
        titleCollapse: true,
        renderTo: target,
        rootVisible: false,
        store: store,
        multiSelect: true,
        singleExpand: true,
        columns: [
            {
            type: 'treecolumn',
            text: 'CI#',
            dataIndex: 'name'},
        {
            text: 'Type',
            dataIndex: 'recordType'}
        ]
    });
});​

Запрос к json_CIChildren?_dc=1329830854458&node=a0NT0000006tYKzMAM был действительным (parentID в root.id получил распространение нормально) и вернулся с допустимым json:

{ "children" : [
         {
             "id": "a0NT0000006tswhMAA",
             "name": "CI334593834",
             "recordType": "Rack",
             "ciName": "Empty rack",
             "alias": "",
             "model": "",
             "status": "",
             "description": "",
             "leaf": "true",
             "iconCls": "x4-ciicon-Rack"
         },
         {
             "id": "a0NT0000006tYKuMAM",
             "name": "CI2345234",
             "recordType": "Service",
             "ciName": "Business Connect - Premium",
             "alias": "",
             "model": "",
             "status": "",
             "description": "",
             "leaf": "true",
             "iconCls": "x4-ciicon-Service"
         }
 ]}

Что я делаю не так?Почему в древовидной сетке не видны поля name и recordType?

Это потому, что store видит только поля, похожие на NodeInterface, и в свойстве data нет моих пользовательских данных?

1 Ответ

1 голос
/ 24 февраля 2012

Я думаю, что проблема в том, что ваши поля модели не отображаются правильно. Свойство id для каждого поля должно быть свойством name.

...