以编程方式创建dojo datagrid“抱歉发生错误”

时间:2012-12-12 06:01:05

标签: datagrid dojo

我正在尝试以编程方式创建一个Dojo dojox.grid.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();

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

2 个答案:

答案 0 :(得分:1)

老兄,这就像我第三次回答你的问题。它之前强烈提醒我两个,但无论如何我都会尝试。

您的示例无效,因为在您的layout - 变量中,您引用的field名为'属性',data.items中不存在info 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

事实上,您的 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中。就那么简单。

现在转到structure

它应该记录DataGrid store与其 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"} ]; 给出的数据相关的{{1}}。所以它描述了整个列,而不是单个单元格。 因此,您只能引用属性名称(key1,key2,key3或firstname,lastname,age,gender),但不能引用值,因为有时可能会有所不同。您只知道对象的结构,而不是实际内容。

因此,看起来应该是这样的:

{{1}}

答案 1 :(得分:0)

不确定这是否有帮助,但在您发布的示例代码中,您在其中一个项目中拼错了“属性”一词,而其他两个项目拼写正确拼写了“属性”一词。请参阅具有属性key1的项目。您必须确保所有字段名称拼写一致。