将Dojo data.objectStore或data.ItemFileWriteStore连接到网格

时间:2012-01-19 15:13:31

标签: javascript dojo dojox.grid

我正在尝试将dojo 1.7 objectStore或itemFileWriteStore连接到网格,但我不确定我做错了什么。

当我使用ItemFileWriteStore运行我的代码时,我得到网格标题,但我没有看到我的数据。当我使用ObjectStore时,网格不存在。

我做错了什么?

更新:刚注意到store.data属性为空。必须意味着我的“dataBucket”的格式可能是错误的?

require(['dojo/on'
            ,'dojo/ready'
            ,'dojo/dom'
            ,"dojo/data/ObjectStore"
            ,"dojo/store/Memory"
            ,"dojox/grid/DataGrid"
            ,"dojo/data/ItemFileWriteStore"
            ],
            function (on,ready,dom,objStore,memStore,grid,itemStore){
                ready(function(){
                    var dataBucket = {//idProperty: 'ID',  //for object store?
                                      identifer: 'ID', //for itemStore
                                      items : [
                                          {ID : '100', col2 : 'Ciao Ciao'},
                                          {ID : '200', col2 : 'Hello'}
                                      ]};

                    var stuff = new itemStore({data : dataBucket});
                    //var stuff = new objStore({store : dataBucket});
                    //var stuff = new memStore({data : dataBucket});

                    var layout = [[
                            {'name':'ID','field' : 'ID','width' : '100px'},
                            {'name':'Stuff','field' : 'col2','width' : '100px'}
                        ]];
                    var myGrid = new grid({
                                id: 'grid',
                                store: stuff,
                                structure: layout,
                                rowSelector: '20px'},
                            document.createElement('div')
                    );

                    dojo.byId("bottomPane").appendChild(myGrid.domNode);

                    myGrid.startup();                        })
                })
            }
        )

4 个答案:

答案 0 :(得分:1)

事实证明商店没有正确填充数据。它构建了一个商店,但没有指出传入的数据格式不正确

答案 1 :(得分:0)

我认为你可能在layout定义中犯了一个错误。不应该像你在field中定义的那样col2 dataBucket秒?

答案 2 :(得分:0)

你也写过:

identifer: 'ID'

而且是

identifier: 'ID'

答案 3 :(得分:0)

dojo / store / Memory转到dojo / store / ObjectStore内部

stuff = new ObjectStore({ objectStore:new Memory({ data: dataBucket }) });

和网格的商店属性

var myGrid = new grid({
                        id: 'grid',
                        store: stuff,
                        structure: layout,
                        rowSelector: '20px'},
                        document.createElement('div')
                    );