2011-08-03 32 views
1

私は現在dojoデータグリッドを使用しています。グリッドの各フィールドのすべての値を含むリストをループすることができます。たとえば、グリッドに次の列があるとします。Dojo DataGrid - 各列のフィールドの値を取得します。

 <th field="name" width="200px">Name</th> 
     <th field="description" width="200px">Description</th> 
      <th field="type" width="200px">Type</th> 

すべてのフィールド値のリストを取得するにはどうすればよいですか?この例では、リストは[name、description、type]でなければなりません。助けてくれてありがとう!

答えて

2

これを試してみましょう。

まず、dijitのIDを知る必要があります。自動生成されている場合(HTMLでDataGridを宣言しているため)、dojo.queryを使用してDOMノードを探し、dijit.byNode(node)を使用してdijitを探し出す必要があります。以下の例では、IDを知っていることを前提としています。

var fields = []; 
var getFields = function(object) { 
    // recurse to handle stacked rows 
    if(dojo.isArray(object)) { 
     dojo.forEach(object, function(o) { 
      getFields(o); 
     }); 
    } else if(object.field) { 
     fields.push(object.field); 
    } else if(object.cells) { 
     getFields(object.cells); 
    } 
}; 
var structure = dijit.byId("dojox_grid_DataGrid_0").structure; 
getFields(structure); 
console.log(fields); 

これは再帰的にfieldプロパティを持つ任意のオブジェクトを探して、グリッドの構造を処理します。

更新宣言グリッドのチェックには、object.cellsを追加する必要がありました。

関連する問題