2013-10-04 28 views
1

我目前正在尝试使用GridX在我的应用程序中显示表格数据。我使用JsonRest作为商店,异步缓存和分页。服务器被正确调用并且结果正确(例如:items = 10-20,response:items = 10-20/30)并且数据是不同的。GridX需要数字ID吗?

但是表格总是在每个页面上重复显示一行(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' 。另外你的结构/列结构并不需要有添加到它的ID,你可以把它作为:

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; 
    }