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