2009-08-19 77 views
2

我正在拉xml數據以確定哪些列是可見的,以及每列的寬度。我的數據網格的寬度可以改變它在HDividedBox的一側。可見性部分工作,但設置寬度導致頭痛。繼承人的代碼:Flex 3 DataGrid列寬問題

for(loop through column data retrieve from XML) 
{ 
    newData[i] = dg.columns[Number(columnsOrder[i]) - 1]; 
    newData[i].visible = (Number(columnsVisibility[i]) == 1); 
    newData[i].width = Number(columnsWidth[i]); 
    trace(newData[i].headerText + " w:" + newData[i].width.toString() + " v:" + newData[i].visible.toString()); 
} 
dg.columns = newData; 
dg.invalidateList(); 

在跡的寬度是前兩項是正確的,但是,它顯示爲「20」永遠連續一個...

Date w:240 v:true 
Title w:184 v:true 
Requestor w:20 v:true 
Approved By w:20 v:true 
Category w:20 v:false 
Status w:20 v:false 
Priority w:20 v:false 

當我輸出Number(columnsWidth [i])它顯示爲正確的值,所以在分配寬度時會發生奇怪的事情。

一直看着這幾個小時,並嘗試了多種嘗試修復它無濟於事。

回答

3

我的數據網格的寬度可以改變其在HDividedBox的一側的味道。

這就是問題所在。

每當DataGrid的寬度不固定時,我都遇到了與Flex 2和Flex 3 DataGridColumn寬度完全相同的問題。我唯一的解決方案是修復DataGrid的寬度或切換到AdvancedDataGrid或其他類似的組件。

+0

我想,如果DataGrid的尺寸太小創建時計算列出現此錯誤。 一個解決方法是將寬度設置爲適應所有列的寬度,例如100,然後在創建完成事件中將寬度設置爲您真正想要的寬度,例如percentWidth = 100 – robmcm 2011-01-12 08:39:32

1

我已經在AdvancedDataGrid中做了同樣的事情,它的工作原理。 通過設置這些值

horizontalScrollPolicy="on" 
    width="100% 

嘗試,然後添加你這個應該HDividedBox類工作列。

1

你可以做到這一點,這是我認爲是DataGrid本身的錯誤。

如果在DataGrid上設置minWidth =「0」和horizo​​ntalScrollPolicy =「{ScrollPolicy.AUTO}」,則可以創建具有固定寬度的DataGridColumn對象,並使其正確服從。

但是,似乎仍然有一個問題,最後一列,當DataGrid仍然大於所有固定寬度的總和時,它將拉伸最終的DataGridColumn。

你可以解決這個問題通過在年底沒有標題文字等

1

確定加入的空白欄 - 我們同時爲不同的列寬模式支持運行到這個自己。只是信息的小珍聞 - 如果你要明確設置寬度,確保你做這樣的事情:

var oldPolicy:String = grid.horizontalScrollPolicy; 
grid.horizontalScrollPolicy ="on" 
//set your widths here 
grid.horizontalScrollPolicy =oldPolicy;