Domanda

Nel mio flex app che memorizzare le larghezze e visiblility di colonne in un file XML. Quando i carichi app che legge dal file XML e imposta valori che colonne a seconda del 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();

Il problema sembra essere l'impostazione della visibilità (imposta il campo visibile correttamente, ma scombina la larghezza) ... Ho provato a installare dopo l'impostazione della larghezza (al di fuori del ciclo) e prima del ciclo pure. Si ridimensiona le colonne correttamente se non faccio niente con la visibilità.

Tutte le idee?

È stato utile?

Soluzione

Aggiungi un'istruzione import nella parte superiore del file di classe:

import mx.core.mx_internal;

Quindi rimuovere utilizzando lo spazio mx_internal, rimuovere il proprietario della colonna, modificare la larghezza e poi reasign il genitore:

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

Questo dovrebbe fare il trucco (o meglio, lo ha fatto per noi dopo un paio di giorni di giuramento)

Altri suggerimenti

è che si horizontalScrollPolicy impostato su false sul datagrid?

"Se la proprietà horizontalScrollPolicy del DataGrid è falso, tutte le colonne visibili deve inserirsi nella zona visualizzabile, e il DataGrid non sempre onorare la larghezza delle colonne, se la larghezza totale delle colonne è troppo piccolo o troppo grande per il visualizzabile la zona."

http: //livedocs.adobe .com / flex / 3 / langref / mx / controlli / dataGridClasses / DataGridColumn.html larghezza

Sono riuscito a farlo funzionare chiamando il ciclo precedente in una funzione due volte ... la prima volta che aggiungere le colonne visibili, la seconda volta è imposta la larghezza corretta. Non è la soluzione migliore, ma non posso spendere più tempo su di esso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top