문제

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

문제는 가시성을 설정하는 것으로 보입니다 (가시 필드를 올바르게 설정하지만 너비를 엉망으로 만듭니다) ... 너비 (루프 외부)와 루프 전에도 설정 한 후 설정을 시도했습니다. 가시성으로 아무것도하지 않으면 열을 올바르게 크게 선별합니다.

어떤 아이디어?

도움이 되었습니까?

해결책

클래스 파일 상단에 가져 오기 명령문 추가 :

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

이것은 트릭을해야합니다 (음, 며칠 동안 맹세 한 후 우리를 위해했습니다).

다른 팁

horizontalscrollpolicy가 datagrid에서 false로 설정되어 있습니까?

"DataGrid의 HorizontalScrollPolicy 속성이 False 인 경우, 모든 가시 열이 표시 가능한 영역에 맞아야하며 DataGrid는 열의 총 폭이 표시 가능한 영역에 비해 너무 작거나 너무 큰 경우에 항상 열의 너비를 명예롭지는 않습니다."

http://livedocs.adobe.com/flex/3/langref/mx/controls/datagridclasses/datagridcolumn.html#width

위의 루프를 함수에서 두 번 호출하여 작동하도록 할 수있었습니다. 처음으로 보이는 열을 추가하면 두 번째로 올바른 너비를 설정합니다. 최상의 솔루션은 아니지만 더 이상 시간을 보낼 수 없습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top