2

我正在尝试以dojox.grid.DataGrid编程方式创建 Dojo。它正在创建但不显示输出,而是显示错误消息:“抱歉,发生错误”

这是代码:

    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();

我不知道哪里出了问题,请帮助我。

4

2 回答 2

1

伙计,这就像我第三次回答你的问题。它强烈地让我想起了之前的两个,但无论如何我都会尝试一下。

您的示例无法正常工作,因为在您的 -layout变量中,您引用了( )field中不存在的命名“属性” 。data.itemsinfo

你也没有得到json-array正确的概念。它应该代表一堆具有非常相似结构的对象。假设您要存储一些人,那么您将有一些keys像名字、姓氏、年龄、性别等。每个人对此会有不同的值。-看起来像这样jsonarray

    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相似,只是值不同。

您尝试做的显然是,将一个单曲存储objectarray,并将每个属性设为object。想一想:在 JavaScript 中的[]意思array{}意思。object

实际上,您的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

它应该描述structureDataGrid与其提供的数据相关的store。因此,它将列描述为一个整体,而不是单个单元格。因此,您只能引用属性名称(key1、key2、key3 或 firstname、lastname、age、gender),但不能引用值,因为有时可能会有所不同。您只知道对象的结构,而不知道其实际内容。

因此,它应该如下所示:

   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"}
    ];   
于 2012-12-12T06:41:08.680 回答
0

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

于 2012-12-13T05:28:36.187 回答