Pergunta

Em meu aplicativo Flex eu armazenar as larguras e visiblility de colunas em um arquivo xml. Quando as cargas de aplicativos que ele lê o arquivo xml e conjuntos de valores que ele colunas conforme o caso:

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();

O problema parece estar definindo a visibilidade (que define o campo visível corretamente, mas mexe-se a largura) ... Eu tentei defini-lo depois de definir a largura (fora do circuito) e antes do loop também. Ele redimensiona as colunas corretamente, se eu não fazer nada com a visibilidade.

Todas as idéias?

Foi útil?

Solução

Adicione uma instrução de importação na parte superior do seu arquivo de classe:

importação mx.core.mx_internal;

Em seguida, retire usando o namespace mx_internal, remova o proprietário da coluna, alterar a largura e, em seguida, reasign o pai:

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;
    }

Isso deve fazer o truque (bem, ele fez por nós depois de um par de dias de palavrões)

Outras dicas

É você horizontalScrollPolicy conjunto para false no datagrid?

"Se a propriedade horizontalScrollPolicy do DataGrid é falsa, todas as colunas visíveis devem caber na área mostrada, eo DataGrid nem sempre irá honrar a largura das colunas se a largura total das colunas é muito pequeno ou muito grande para o displayable área."

http: //livedocs.adobe .com / flex / 3 / langref / mx / controles / dataGridClasses / DataGridColumn.html # largura

Eu era capaz de fazê-lo funcionar, chamando o loop acima em uma função duas vezes ... a primeira vez que adicionar as colunas visíveis, a segunda vez que define a largura correta. Não é a melhor solução, mas eu não posso gastar mais tempo com ele.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top