2012-12-12 59 views
2

我正尝试以编程方式创建Dojo dojox.grid.DataGrid。这是越来越创建,但不会显示输出,而是显示了消息的错误:“对不起,发生了错误”以编程方式创建dojo datagrid“对不起,发生错误”

下面是代码:

var info=[ 
     { 
      "Propery":"key1","Value":"value1"}, 
     { 
      "Property":"key2", "Value":"value2"}, 
     { 
      "Property":"key3","Value":"value3"} 
    ]; 

    var layout = [ 
     { 
      name: "Property", 
      field: 'Property', 
      width: "180px"}, 
     { 
      name: "Value", 
      field: 'Value', 
      width: "180px"} 
    ];  

    var myStore = new dojo.data.ItemFileReadStore({data:{items:info}}); 

    var grid = new dojox.grid.DataGrid({ 
      store: myStore, 
      structure: layout 
     },"myDiv");  

    grid.startup(); 

我不知道它在哪里出错了,请帮助我。

+0

现在,这是第三次,你告诉我们,你没有得到正确的概念。我认为让你明白的唯一方法就是你发布一个更有代表性的'对象'数组,用来填充网格。 – nozzleman

+0

好友我已经将我的json转换为对象数组,并且我是DOJO新手,如果您有解决方案,请告诉我 – user1838922

+0

希望它有帮助,其最后一次尝试 – nozzleman

回答

1

老兄,这就像我第三次回答你的问题。它强烈地让我想起了前两个,但我会试试。

你举的例子不能工作,因为在你layout -variable,你指的是不data.itemsinfo)存在一个名为field“财产”。

你也没有得到json-array的概念。它可以表现为一堆结构非常相似的物体。假设你想存储一些人,那么你会有一些像名字,姓氏,年龄,性别等keys每个人都会有不同的价值观。该json - array看起来就像是:

var people = [ 
     { 
      firstname: 'maja', 
      lastname: 'van hinten' 
      age: 23 
      gender: 'w'}, 
     { 
      firstname: 'willy', 
      lastname: 'wantstoknowit' 
      age: 11 
      gender: 'm'}, 
     { 
      firstname: 'helmut', 
      lastname: 'kohl' 
      age: 101 
      gender: 'm'}, 
     ]; 

注意,该properties的名称很相似,只是值不同。

您试图做的显然是,将一个object作为array存储,并使每个属性为object。想想看:[]意味着array,{}意味着object在JavaScript中。

事实上,你info -variable应该是这样的:

var info = [ 
     { 
      "key1": "value1",  
      "key2": "value2",  
      "key3": "value3"} 
    ]; 

,如果你想存储更多一些反对它应该是这样的:

var info = [ 
     { 
      "key1": "value1",  
      "key2": "value2",  
      "key3": "value3"}, 
     { 
      "key1": "value4",  
      "key2": "value5",  
      "key3": "value6"}, 
     { 
      "key1": "value7",  
      "key2": "value8",  
      "key3": "value9"} 
    ]; 

... object存储在array中。就那么简单。

现在你layout var

应该discribe你DataGridstructure有关其store给出的数据。所以它描述了整个列,而不是单个单元格。 因此,您只能引用属性名称(key1,key2,key3或名字,姓氏,年龄,性别),但不涉及这些值,因为有时可能会有所不同。你只知道你的对象的结构,而不是它的实际内容。

因此,应该看起来像:

var layout = [ 
     { 
      name: "Key1's content", // you can name this whatever you want 
      field: 'key1',   // but not this, it refers to the property name of your objects 
      width: "180px"}, 
     { 
      name: "Key2's content", // this could be named randomly too of course 
      field: "key2", 
      width: "180px"}, 
     { 
      name: "Key3's content", // and that one as well 
      field: "key3", 
      width: "180px"} 
    ]; 
+0

谢谢,这真的很有帮助,但我的问题仍然没有解决,我编辑它,它只显示布局,但不显示信息的数据,它只显示“抱歉,发生错误”,请看看和帮助我出 – user1838922

+0

包装所有,但dojo.addOnLoad(函数(){/ *所有代码在这里* /})的'dojo.require(...)'语句'''在这[[小提琴] (http://jsfiddle.net/bvgcV/3/)。不幸的是,加载样式表显然有问题,但嘿! – nozzleman

+0

你也忘了设置'查询'选项'DataGrid',但我不知道这是否可选(见小提琴) – nozzleman

0

不知道这是否会帮助,但在您发布的示例代码,你拼错单词“财产”在您的项目之一,而其他两个项目有“财产”这个词拼写正确。参考带有属性键1的项目。您必须确保所有字段名称拼写一致。

相关问题