Pergunta

Estou puxando dados xml para determinar quais colunas são visíveis, e as larguras de cada coluna. largura do meu datagrid pode mudar sinces sua em um lado de um HDividedBox. A parte visibilidade funciona, mas definindo a largura está causando dores de cabeça. Heres o código:

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

No traço a largura é correto para os dois primeiros itens, no entanto, a sua aparecendo como "20" para uma cada vez consecutiva ...

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

Quando eu saída Number (columnsWidth [i]) ele aparece como o valor correto para que algo estranho está acontecendo na atribuição da largura.

estado a olhar para isso por algumas horas agora, e já tentou várias coisas para tentar corrigi-lo sem sucesso.

Foi útil?

Solução

largura do meu datagrid pode mudar sinces sua em um lado de um HDividedBox.

Esse é o problema ali mesmo.

Eu enfrentei exatamente o mesmo problema com o Flex 2 e Flex 3 DataGridColumn largura é sempre que a largura para o DataGrid não foi fixado. A única solução que eu tinha era para corrigir a largura do DataGrid ou interruptor para AdvancedDataGrid ou outros componentes similares.

Outras dicas

Eu fiz a mesma coisa em AdvancedDataGrid e ele funciona. Tente ajustando esses valores

  horizontalScrollPolicy="on"
  width="100%

e, em seguida, adicioná-lo colunas Isso deve funcionar com HDividedBox.

Você pode fazer isso, é o que eu acredito é um bug no próprio DataGrid.

Se você definir minWidth = "0" e horizontalScrollPolicy = "{ScrollPolicy.AUTO}" no DataGrid, você pode criar DataGridColumn Objetos com larguras fixas e tê-lo ser obedecidas corretamente.

No entanto, não parece ainda ser um problema com a coluna final, quando o DataGrid é ainda maior, então a soma de todas as larguras fixas, ele vai esticar o DataGridColumn final para fora.

Você pode contornar isso adicionando uma coluna em branco no final com nenhum texto de cabeçalho etc.

Ok - temos correr para isso nós mesmos, enquanto a construção suporte para vários modos de largura da coluna. Apenas um pequeno petisco de informações - se você quiser larguras definidas explicitamente, certifique-se de fazer algo parecido com isto:

var oldPolicy:String = grid.horizontalScrollPolicy;
grid.horizontalScrollPolicy ="on"
//set your widths here
grid.horizontalScrollPolicy =oldPolicy;
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top