GridX需要数字ID吗?

时间:2013-10-04 07:37:06

标签: json dojo dojo.gridx

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

但是表格总是在每个页面上只重复显示一行(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();

提前致谢。

1 个答案:

答案 0 :(得分:2)

我没有在本地测试过,但是如果你在测试gridx时看看MusicData.js,那么所有数据都没有id数字“column”,但是id列后来被混入。请参阅下面的函数getData粘贴了我指向的相关线。此外,对于商店,您可以指定idProperty,因此如果您不想添加“id”而不想将其称为employeeNumber,您可以使用idProperty:'employeeNumber'并使用下面的相同方法将'id'替换为'employeeNumber' 。你的结构/列结构也不需要添加id,你可以把它保留为:

var columns = [
    {name: "AAA", field: "aaa", sortable: false},
    {name: "BBB", field: "bbb"}
来自MusicData.js的

getData函数:

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