0

dojo 1.7.2では、配列値を含むデータストアを作成すると、dojox.grid.DataGridは問題なくそれらを表示し、各アイテムをコマで区切ります。

ただし、dojo 1.6では、配列の最初の要素のみを使用します。バージョン1.6を使用する必要があるプロジェクトがあります。そのバージョンでこれに対する回避策はありますか?

問題を説明するために、ここに2つの例があります。

ありがとう !

4

2 に答える 2

1

どうやら問題は、グリッドではなく ItemFileReadStore に起因するようです。代わりに ObjectStore と MemoryStore を使用するように 1.6 のコードを変更したところ、うまくいきました。

http://jsfiddle.net/psoares/HbFNY/16/を参照してください

于 2012-05-07T14:53:54.170 に答える
0

これは欠陥ですが、そうではありません。childAttrs の 1 つである場合を除き、配列として値を使用できないため、JSON の構成は正しくありません。[1,2,3].toString() の性質上、値を配列として設定しようとする試みが有効と見なされる理由です。

ItemFileReadStore の get/set は、その項目を次のように処理します。

store._arrayOfAllItems = {
 value1 : { values : [ 'realvalue' ] },
 value2 : { values : [ 'realvalue' ] }
};

ゲッターは言う

store.get = function(itemById, val) { return itemById[val][0]; } 
   // why only the first arrayslot is pulled from store---/^

JSON コンストラクトで、次のような値を設定できない理由は何ですか?

   var data = {
        id: 'id',
        label: 'id',
        items: [
            {
            id: "value1",
            values: "a,b,c"   // permit-able string value
        },
        {
            id: "value2",
            values: "foo"}
        ]
    };

1 つの ID の同じキーで複数の値が必要な場合は、データを子として配信し、そのように処理する必要があります。

    data: {
        id: 'id',
        label: 'id',
        childrenAttrs: [ 'items', 'children'], // << default behavior
        items: [ {
            id: "value1",
            children: [
              { id: "value1_1", values: 'a' },
              { id: "value1_2", values: 'b' },
              { id: "value1_3", values: 'c' }
            ]
        }, {
            id: "value2",
            values: "foo"
        } ]
    }

ただし、複数レベルのデータストアを使用できるのは dojox.grid.TreeGrid のみです。

于 2012-05-08T06:08:59.163 に答える