dojo Grid Json问题

时间:2013-09-06 14:38:43

标签: json dojo grid

我有这段代码

dojo.ready(function(){
  inventoryStore = new dojo.store.JsonRest({
    target: "http://localhost:9080/driver/dojoMVC",
    idProperty: "name",
    put: function(object, options){
      if(object.quantity < 0){
    throw new Error("quantity must not be negative");
      }
    }
});
results = inventoryStore.query("");
var storeData =  new dojo.data.ItemFileWriteStore({ 
  data:dojo.fromJson(results)
});

gridLayout = [
  { name: 'Name', field: 'name', editable: true},
  { name: 'Quantity', field: 'quantity'},
  { name: 'Category', field: 'category'}];
var grid = new dojox.grid.DataGrid({
  store: storeData,
  clientSort: true, 
  structure: gridLayout
}, dojo.byId("gridElement"));
grid.startup();

当我运行它时,我在FF控制台中收到这个奇怪的错误

SyntaxError: missing ] after element list
[Break On This Error]   

([object Object])

json.js (line 26, col 9)

任何人都可以帮我吗? 感谢

2 个答案:

答案 0 :(得分:0)

问题出在您发布的代码中,在第26行的最后有一个语法错误。您使用dojo.ready({开始但未使用});完成

在这里,重新格式化使其更加明显:

dojo.ready(function(){
    inventoryStore = new dojo.store.JsonRest({
        target: "http://localhost:9080/driver/dojoMVC",
        idProperty: "name",
        put: function(object, options){
            if(object.quantity < 0){
                throw new Error("quantity must not be negative");
            }
        }
    });
    results = inventoryStore.query("");
    var storeData =  new dojo.data.ItemFileWriteStore({ 
        data:dojo.fromJson(results)
    });

    gridLayout = [
        { name: 'Name', field: 'name', editable: true},
        { name: 'Quantity', field: 'quantity'},
        { name: 'Category', field: 'category'}
    ];
    var grid = new dojox.grid.DataGrid({
        store: storeData,
        clientSort: true, 
        structure: gridLayout
    }, dojo.byId("gridElement"));

    grid.startup();

尝试添加:

});

此外,您在那里遗漏了一些var个关键字。

答案 1 :(得分:0)

也许你必须像这样设置你的布局:

        var layout = [[
            {name:"Id", field: "ident", width:"30%"},
            {name:"Name", field: "name", width:"70%"}
            ]];

在Ev'ry示例中,我在dojo中找到布局是双括号。 这可以解释为什么错误说“缺少”。

查找: http://dojotoolkit.org/reference-guide/1.9/dojo/data/ItemFileWriteStore.html?highlight=itemfilewritestore#itemfilewritestore-changes-reflected-in-dojox-data-datagrid

<强> UPDATE1

所以错误在于商店。您是否尝试填写如下数据:

results = inventoryStore.query( name : "*"); // to query all items

你检查过“结果”中有结果吗?

var storeData =  new dojo.data.ItemFileWriteStore({ 
                 data:results
                 });

毕竟我会尝试在没有dojo.fromJson的情况下填写数据。

试一试。

此致,Miriam