2

プログラムで 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();

どこが間違っているのかわかりません、助けてください。

4

2 に答える 2

1

おい、あなたの質問に答えるのはこれで3回目くらいだ。以前の2つを強く思い出しますが、とにかく試してみます.

layout-variable で、( )fieldに存在しない名前付きの「プロパティ」を参照しているため、この例は機能しません。data.itemsinfo

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は似ていますが、値が異なるだけであることに注意してください。

明らかにやろうとしているのは、1 つのシングルobjectを として保存しarray、各プロパティを にすることobjectです。考えてみてください: JavaScriptの[]means array{}means 。object

実際、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あなたの を記述する必要があります。したがって、単一のセルではなく、列全体を記述します。したがって、プロパティ名 (key1、key2、key3、または firstname、lastname、age、gender) のみを参照できますが、値は異なる場合があるため参照できません。実際のコンテンツではなく、オブジェクトの構造のみを知っています。DataGridstore

したがって、次のようになります。

   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

これが役立つかどうかはわかりませんが、投稿したサンプルコードでは、アイテムの1つで「プロパティ」という単語のスペルを間違えていますが、他の2つのアイテムでは「プロパティ」という単語のスペルが正しくなっています。プロパティkey1の項目を参照してください。すべてのフィールド名のスペルが一貫していることを確認する必要があります。

于 2012-12-13T05:28:36.187 に答える