2011-06-23 10 views
1

私はAdvancedDataGridをhtmlテーブルから動的に構築しています。 htmlはサーバによって提供されるので、私のコードは異なるカラム/行に対して動的に動作する必要があります。動的に行を追加するAdvancedDataGrid Flex

私は列が構築されており、正しく表示されますが、行を追加すると問題が発生します。後続のコードスニペットでは、すべての列を反復し、各列の値をオブジェクトに追加して(完全な行を作成する)、それをAdvancedDataGridのdataProviderに後で設定するArrayCollectionに追加します。

//create an item to work with 
var chartItem:Object = new Object(); 
for(var j:int = 0; j < columnResult.length ; j++) 
{ 
    //this is the data that goes under the column (headerArray) 
    var item:String = removeformat(removetd(columnResult[j])); 
    //grab the header (this is which column the value will be added 
    var head:String = headerArray[j]; 
    //set the value to header (pair) 
    chartItem[head] = item; 
} 
//add the chartItem (row) to the main collection 
arr.addItem(chartItem); 

私の問題は、列のタイトルが「0」であるように、「head」の値が0である場合、項目が文字列として0ではなく位置[0]に追加されることです。

私はいくつかの例を見上げるとしてみました:

chartItem.headそれはちょうど列のタイトルは「頭」の代わりのヘッドVAR使用することはできません

答えて

1

の値をつかんで想定しています連想配列のインデックスとしての数字。

ほとんどの場合、連想配列のインデックスはObjectの変数名に過ぎません。そのため、obj["someKey"]またはobj.someKeyのいずれかでデータにアクセスできます。もちろん、変数名(空白、特殊記号など)内で許可されていないキー内の文字を使用することもできます。ただし、角かっこではなく、ドットでアクセスすることができます(obj["foo/bar"]作品、obj.foo/barは動作しません)。だから、これはお勧めしません...

まあ、あなたの問題に戻って:私はあなたのすべての列名に文字(たとえば "_0"を使用)を付けることをお勧めします。 AdvancedDataGridの列を動的に作成するので、問題はないはずです。それらの列のheaderTextを明示的に設定して、 "_0"ではなく "0"を列ヘッダーに表示することができます。

+0

"0"のヘッダーを持つ列で問題が解決してくれてありがとう。しかし、私は今、別の問題を抱えているようです...データのほんの一部がテーブルに表示されているようです。私はいくつかの列だけの単純なテーブルを持っていますが、グループ化されたテーブルを持っている場合(ただし、グループ化が正しく表示され、headerarrayの検査でも正しい列ヘッダーが得られていることがわかります)不足している。私はコードをステップ実行してどこから始めるべきかわからないので、正しく動作しているようです。 – leshow

+0

この質問に回答としてマークし、あなたの他の問題のために新しい質問をする必要があります。好ましくは、いくつかの実施例のコードである。 –

+0

よろしくお願いします。 – leshow