簡體   English   中英

Flex DataGrid列寬

[英]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上將horizo​​ntalScrollPolicy設置為false嗎?

“如果DataGrid的horizo​​ntalScrollPolicy屬性為false,則所有可見列都必須適合可顯示區域,如果列的總寬度對於可顯示區域而言太小或太大,則DataGrid將不會始終遵循列的寬度。”

http://livedocs.adobe.com/flex/3/langref/mx/controls/dataGridClasses/DataGridColumn.html#width

我能夠通過在函數中調用上面的循環兩次來使它工作......第一次添加可見列時,第二次設置正確的寬度。 不是最好的解決方案,但我不能再花時間了。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM