2011-06-27 60 views
0

我正在動態添加行,它們似乎沒有在正確的列下。我在'headerArray'中擁有所有的頭文件,並且需要添加的數據位於字符串'item'中。AdvancedDataGrid Flex - 行沒有被添加到正確的列下

//create an item to work with 
var chartItem:Object = new Object(); 
for(var j:int = 0; j < columnResult.length ; j++) 
{ 

    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); 
tableCollection = arr; 

它正確地獲取所有標題並設置chartItem(從調試器檢查)。當它到達一行(從html構建),其中有一個項目只有一些列的值時,它不會在右列下添加信息,它只是從左到右,並將其添加到下一個。

這種行爲有點奇怪,因爲chartItem顯然具有正確的標題值和相應的項目值,但正如我所說的,它們不會在右列下面結束。

tableCollection被設置爲數據提供程序網格以後如果我讀了該行的跨度屬性(不是因爲修改)

+0

看起來像是一個錯誤的錯誤,但如果沒有更多的代碼來查看,就很難調試。任何方式你可以粘貼更多的代碼?你的「removeFormat」和「removetd」函數有什麼作用? – Kyle

+0

感謝您的評論,我認爲我解決了它,但我無法發佈解決方案,但我必須等待幾個小時。我會把它放好,這樣每個人都可以看看。它涉及從要添加的項目中獲取colspan屬性,然後將該colspan添加到所有NEXT行,從而有效地將它們推到所有的數量 – leshow

回答

1
var chartItem:Object = new Object(); 
var span:int = 0; 
for(var j:int = 0; j < columnResult.length ; j++) 
{ 
    var colSpan:int = this.getColSpan(columnResult[j]);   
    var item:String = removeformat(removetd(columnResult[j])); 
    //grab the header (this is which column the value will be added 
    var head:String; 
    if (colSpan >1){ 
     head = headerArray[j]; 
     span = colSpan; 
    } else { 
     if (span == 0){ 
      head = headerArray[j]; 
     } else { 
      head = headerArray[j+span-1] 
     } 
    } 
    //set the value to header (pair) 
    chartItem[head] = item; 
} 
//add the chartItem (row) to the main collection 
arr.addItem(chartItem); 

,我集中的下一行是在柱+先前的合併單元格。那麼所有的行都會正確排列。