2012-05-07 7 views
0

dojo 1.7.2では、配列値を含むデータ・ストアを作成すると、dojox.grid.DataGridは問題なく、各項目を昏睡状態で区切って表示します。dojo 1.6 DataGridはリストを表示できません。

しかし、dojo 1.6では、配列の最初の要素だけをとります。私はバージョン1.6を使用しなければならないプロジェクトを持っています。そのバージョンのこれに対する回避策はありますか?

は、問題を説明するために、ここでは2例は以下のとおりです。道場1.6で

ありがとう:道場1.7でhttp://jsfiddle.net/psoares/HbFNY/

  • 答えて

    1

    明らかに問題は、グリッドからではなくItemFileReadStoreから発生します。 代わりにObjectStoreとMemoryStoreを使用するように1.6のコードを修正しました。

    は、それがchildAttrsの一つである場合を除き、任意の値を配列として許可されていないとして、あなたのJSONの構造は非常に適切ではない。これは欠陥であると、まだそれがないhttp://jsfiddle.net/psoares/HbFNY/16/

    0

    を参照してください。 [1,2,3] .toString()の性質上、配列としての値の設定が有効であると考えられる理由です。/ItemFileReadStoreにセットされます

    のようなその項目で動作します。その後、

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

    ゲッターを、あなたのような設定から値を禁止するもの、あなたのJSONの構築物において

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

    を語ります以下?あなたが1つのIDの同じキーで複数の値をしたいなら、あなたは子供のようにデータを届けるなど、そのように処理する必要があります

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

    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は、マルチLVLのデータストアを使用できるようになります

    関連する問題