Регулировка высоты строк ExtJS Grid Panel

Я работаю с ExtJS, чтобы создать сетку на панели вкладок, в каждой ячейке которой будут ссылки. Если имеется более одной ссылки, строка должна расширяться, чтобы строки были шире, когда это необходимо.

Я работаю над примером «Буферизованная прокрутка со строками переменной высоты» в 4.1.1 примерах (var-height-row.js). Я не могу заставить его работать с моими данными. Сетка отображается, но ни одна из строк не видна. Если бы кто-нибудь мог сказать мне, что я делаю неправильно, это было бы очень признательно!

Сообщение об ошибке, которое я получаю, records is undefined и вызывается ближе к концу моего кода.

ФРАГМЕНТ КОДА

 var detailStore;
 var detailGrid;
 var MON = 'Monday';
 var TUE = 'Tuesday';
 var WED = 'Wednesday';
 var THU = 'Thursday';
 var FRI = 'Friday';
 var SHIFT = 'shift';

 Ext.define('Location', {
     extend: 'Ext.data.Model',
     fields: [{
             name: SHIFT
         }, {
             name: MON
         }, {
             name: TUE
         }, {
             name: WED
         }, {
             name: THU
         }, {
             name: FRI
         },
         'rowHeight'
     ]
 });

 function LoadDetailsGrid() {
     // create the Data Store
     detailStore = Ext.create('Ext.data.Store', {
         id: 'detailStore',
         pageSize: 50000,
         // allow the grid to interact with the paging scroller by buffering
         buffered: true,
         // never purge any data, we prefetch all up front
         purgePageCount: 0,
         model: 'Location',
         proxy: {
             type: 'memory'
         }
     });

     detailGrid = Ext.create('Ext.grid.Panel', {
         width: 700,
         height: 500,
         title: 'Weekly Detail',
         store: detailStore,
         verticalScroller: {
             variableRowHeight: true
         },
         loadMask: true,
         selModel: {
             pruneRemoved: false,
             selectionMode: 'MULTI'
         },
         viewConfig: {
             trackOver: false
         },
         // grid columns
         columns: [{
             flex: 1,
             sortable: true,
             width: 300,
             dataIndex: SHIFT
         }, {
             text: MON,
             width: 125,
             sortable: false,
             dataIndex: MON
         }, {
             text: TUE,
             width: 125,
             sortable: false,
             dataIndex: TUE
         }, {
             text: WED,
             width: 125,
             sortable: false,
             dataIndex: WED
         }, {
             text: THU,
             width: 125,
             sortable: false,
             dataIndex: THU
         }, {
             text: FRI,
             width: 125,
             sortable: false,
             dataIndex: FRI
         }],
         renderTo: detailGridDiv
     });

     var data = createData(),
         ln = data.length,
         records = [],
         i = 0;

     for (; i < ln; i++) {
         records.push(Ext.create('Location', data[i]));
     }
 }


 Ext.onReady(function() {

     LoadDetailsGrid();

     var tabControl = new Ext.TabPanel({
         renderTo: 'tabs',
         activeItem: 0,
         width: 600,
         height: 250,
         plain: true,
         defaults: {
             autoScroll: true,
             bodyPadding: 10
         },
         items: [
             detailGrid
         ] // THIS IS WHERE THE ERROR HITS
     });

     detailStore.cachePage(records, 1);
     detailStore.guaranteeRange(0, 5);
 });

person Jesse Roper    schedule 23.08.2012    source источник
comment
Вы видите, что возвращается в AJAX?   -  person egerardus    schedule 23.08.2012


Ответы (1)


Если ваш пример кода точен, вы даже не загрузите записи в хранилище. Основываясь на том, что у вас есть, попробуйте следующее:

var data = createData();
detailStore.add(data);

Метод Ext.data.Store#add создаст экземпляры модели, используя объекты, представляющие данные. Вам не нужно вручную создавать каждую запись. В качестве примечания: вы не используете конфигурацию renderTo для компонента, если он будет дочерним элементом контейнера.

person Eric    schedule 24.08.2012