2012-05-18 5 views
2

Я новичок в Ext JS и пробую различные варианты на Grid. Я создал сетку и добавил ее в панель (Ext.panel.Panel). Сетка выводится с пустыми данными (я не добавил к ней прокси). При возникновении какого-либо события я создаю объект JSON и запускаю loadData на сетке.Extjs загрузка локального объекта JSON в сетку

Ниже приведен фрагмент кода.

Ext.define('AM.view.grid.Details', { 
    extend: 'Ext.grid.Panel', 
    alias: 'widget.details', 
    title: 'Widget Data', 

    store: { 
     autolaod: true, 
     fields: [{ 
      name: 'widgetid', 
      mapping: 'widget_id', 
      type: 'string' 
     }, { 
      name: 'widgetname', 
      mapping: 'widget_name', 
      type: 'string' 
     }, { 
      name: 'widgetnotes', 
      mapping: 'widget_notes', 
      type: 'String' 
     }], 
     reader: { 
      type: 'json' 
     } 
    }, 
    width: 620, 
    height: 400, 

    forceFit: true, 
    columns: [{ 
     header: 'id', 
     dataIndex: 'widgetid', 
     hidden: true 
    }, { 
     header: 'Name', 
     dataIndex: 'widgetname', 
     width: 150 
    }, { 
     header: 'Note', 
     dataIndex: 'widgetnotes', 
     width: 150 
    }], 

    renderTo: Ext.getBody() 
}); 

У меня есть функция, которая является функцией обратного вызова другого виджета. Когда событие происходит, эта функция getTriggered.

function someFunction(grid) { 
    var jsonData = formGridData(); 
    grid.store.loadData(jsonData); 
} 

Пожалуйста, предположим, что сетка создается и у меня есть функция formGridData(), которая преобразует сформированную строку в JSON объект и возвращается.

Итак, когда я запускаю приложение, если jsonData имеет длину 5, то в сетке появляются 5 пустых строк.

Ниже приводится JSONData

[{ 
    'widget_id': 'widget-1', 
    'widget_name': 'gridpanel', 
    'widget_notes': 'This is used to handle..' 
}, { 
    'widget_id': 'widget-2', 
    'widget_name': 'combo', 
    'widget_note': 'This is used to handle..' 
}, { 
    'widget_id': 'widget-3', 
    'widget_name': 'panel', 
    'widget_note': 'This is used to handle..' 
}] 

Есть ли что-то неправильно в том, что я делаю?

Спасибо,
Фани

ответ

2

Ваши dataIndexes на сетке неверны.

columns: [{ 
    header: 'id', 
    dataIndex: 'widget_id', //was widgetid 
    hidden: true 
}, { 
    header: 'Name', 
    dataIndex: 'widget_name', //was widgetname 
    width: 150 
}, { 
    header: 'Note', 
    dataIndex: 'widget_notes', //was widgetnotes 
    width: 150 
}] 

Что происходит, он видит нужное количество строк, но так как JSON у вас есть в качестве примера называется widget_ * и примечанием виджет *, он думает, что они что-то еще, и, следовательно, не может показать их в сетке по мере необходимости

+0

У меня есть dataIndexes правильно, я имею в виду, как у вас есть в ответе. – Patton

+0

Возможно, мой ответ не был ясен, я его пересмотрел. Если бы это было ясно, тогда ваш вопрос был неправильным. – Alex

+0

Ooops Я не видел ваших комментариев, это действительно сработало для меня. благодаря – Patton

2

К сожалению я не заметил, что

Так что, кажется, ваш dataIndex недействителен

http://jsfiddle.net/ssxenon01/WpZMU/8/

+0

jsonData уже в расшифрованном формате. jsonData - это не строка, а объект JSON – Patton

+0

Я тестировал на jsfiddle, это работает после того, как я меняю dataIndex – XenoN

+0

Спасибо Xenon за ваш замечательный пример. Это облегчило мою задачу. Большое спасибо – Patton

Смежные вопросы