[英]Flex DataGrid Column Width
在我的flex應用程序中,我將列的寬度和可見性存儲在xml文件中。 當應用程序加載時,它會從xml文件中讀取並根據需要設置列值:
for(i = 0; i < columnsOrder.length; i++){
newOrder[i] = myDG.columns[Number(columnsOrder[i]) - 1];
newOrder[i].visible = (Number(columnsVisiblity[i]) == 1);
newOrder[i].width = Number(columnsWidth[i]);
}
myDG.columns = newOrder;
myDG.invalidateList();
問題似乎是設置可見性(它正確設置可見字段但是會增加寬度)...我在設置寬度(循環外部)之后以及循環之前嘗試設置它。 如果我不對可見性做任何事情,它會正確調整列的大小。
有任何想法嗎?
在類文件的頂部添加import語句:
import mx.core.mx_internal;
然后使用mx_internal命名空間刪除,刪除列的所有者,更改寬度,然后重新設置父級:
public static function resizeColumn(col:DataGridColumn, size:int):void
{
var owner:* = col.mx_internal::owner
col.mx_internal::owner = null;
col.width = size;
col.mx_internal::owner = owner;
}
這應該做的伎倆(好吧,它經過幾天的咒罵后為我們做了)
您在datagrid上將horizontalScrollPolicy設置為false嗎?
“如果DataGrid的horizontalScrollPolicy屬性為false,則所有可見列都必須適合可顯示區域,如果列的總寬度對於可顯示區域而言太小或太大,則DataGrid將不會始終遵循列的寬度。”
http://livedocs.adobe.com/flex/3/langref/mx/controls/dataGridClasses/DataGridColumn.html#width
我能夠通過在函數中調用上面的循環兩次來使它工作......第一次添加可見列時,第二次設置正確的寬度。 不是最好的解決方案,但我不能再花時間了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.