2013-10-04 4 views
1

В настоящее время я пытаюсь использовать GridX для отображения данных таблицы в моем приложении. Я использую JsonRest как хранилище, Async cache и Pagination. Сервер правильно вызывается, и результат верен (например: items = 10-20, response: items = 10-20/30), и данные различны.GridX требует числовой идентификатор?

Но таблица всегда показывает на каждой странице несколько раз только одну строку (10 раз, если страница имеет размер 10). Модель GridX довольно сложна, но мне кажется, что ей нужен какой-то идентификатор строки (я где-то читал, что он должен быть числовым). Мое приложение просто не имеет для этого числового идентификатора данных. Можно ли вообще использовать gridX, или у меня что-то не сконфигурировано?

var store = new JsonRest({target: activitiesResource}); 
var columns = [ 
    {name: "AAA", field: "aaa", sortable: false}, 
    {name: "BBB", field: "bbb"} 

]; 


//Create grid widget. 
var grid = new Grid({ 
    id: 'grid', 
    cacheClass: Async, 
    pageSize: 25, 
    autoHeight: true, 
    store: store, 
    cacheSize: -1, 
    structure: columns, 
    modules: [ 
     Pagination, 
     PaginationBar 
    ] 
); 

//Put it into the DOM tree. Let's assume there's a node with id "gridContainer". 
grid.placeAt('htmlGrid'); 

//Start it up. 
grid.startup(); 

Заранее спасибо.

ответ

2

Я не тестировал это локально, но если вы посмотрите на MusicData.js при тестировании для gridx, все эти данные не имеют числового «столбца» id, однако столбец id будет затем смешанным. См. Функцию getData, ниже Я вставил соответствующие строки, на которые я указываю. Кроме того, для магазина вы можете назначить idProperty, поэтому, если вы не хотите добавлять «id», вместо этого хотите называть его employeeNumber, вы можете idProperty: «employeeNumber» и использовать тот же метод ниже, заменив «id» на «employeeNumber», , Также вы структура структура/столбец не нужно иметь идентификатор добавил к нему, вы можете оставить его как:

var columns = [ 
    {name: "AAA", field: "aaa", sortable: false}, 
    {name: "BBB", field: "bbb"} 

функции GetData от MusicData.js:

getData: function(size){ 
     size = size === undefined ? 100 : size; 
     var data = { 
      identifier: 'id', 
      label: 'id', 
      items: [] 
     }; 
     for(var i = 0; i < size; ++i){ 
      var item = items[i % items.length]; 
      data.items.push(lang.mixin({ 
       id: i, 
       order: i + 1, 
       Color: new Color([Math.sin(i) * 100, Math.cos(i) * 100, i * i]).toHex() 
      }, item)); 
     } 
     return data; 
    }