Question

Je tire des données XML afin de déterminer quelles colonnes sont visibles, et les largeurs de chaque colonne. La largeur de mon DataGrid peut changer son sinces d'un côté d'un HDividedBox. La partie de visibilité fonctionne, mais le réglage de la largeur est à l'origine des maux de tête. Heres le code:

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

Dans la trace la largeur est correcte pour les deux premiers éléments, cependant, sa projection en tant que « 20 » pour une jamais consécutive ...

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

Quand je Nombre de sortie (columnsWidth [i]), il apparaît comme la valeur correcte si quelque chose de bizarre se passe dans l'attribution de la largeur.

regardé ce pendant quelques heures maintenant, et nous avons essayé plusieurs choses à essayer de le réparer en vain.

Était-ce utile?

La solution

  
    

La largeur de mon DataGrid peut changer son sinces d'un côté d'un HDividedBox.

  

C'est le problème là.

Je fait face au même problème avec Flex 2 et Flex 3 de largeur DataGridColumn chaque fois que la largeur de la grille de données n'a pas été fixé. La seule solution que j'avais été de fixer la largeur du DataGrid ou un commutateur à AdvancedDataGrid ou d'autres composants similaires.

Autres conseils

Je l'ai fait la même chose en AdvancedDataGrid et il fonctionne. Essayez en réglant ces valeurs

  horizontalScrollPolicy="on"
  width="100%

et puis vous ajoutez des colonnes cela devrait fonctionner avec HDividedBox.

Vous pouvez accomplir cela, il est ce que je crois est un bug dans le DataGrid lui-même.

Si vous définissez minWidth = « 0 » et horizontalScrollPolicy = « {ScrollPolicy.AUTO} » sur la grille de données, vous pouvez créer des objets DataGridColumn avec des largeurs fixes et faites-être obéi correctement.

Cependant, il semble y avoir encore un problème avec la dernière colonne, lorsque le DataGrid est encore plus grand que la somme de toutes les largeurs fixes, il étirer la DataGridColumn finale sur.

Vous pouvez contourner ce problème en ajoutant une colonne vide à la fin sans texte d'en-tête, etc.

Ok - nous avons rencontré nous-mêmes tout en renforçant le soutien de divers modes de largeur de colonne. Juste un peu friandise de l'information - si vous souhaitez définir la largeur explicitement, assurez-vous de faire quelque chose comme ceci:

var oldPolicy:String = grid.horizontalScrollPolicy;
grid.horizontalScrollPolicy ="on"
//set your widths here
grid.horizontalScrollPolicy =oldPolicy;
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top