Проблема ширины столбца DataGrid Flex 3 - PullRequest
2 голосов
/ 20 августа 2009

Я извлекаю данные XML, чтобы определить, какие столбцы видимы, и ширину каждого столбца. Ширина моей таблицы данных может меняться, так как она находится на одной стороне HDividedBox. Часть видимости работает, но установка ширины вызывает головные боли. Вот код:

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

В трассе ширина верна для первых двух элементов, однако она отображается как "20" для одного последовательного ...

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

Когда я вывожу Number (columnsWidth [i]), оно отображается как правильное значение, поэтому в назначении ширины происходит что-то странное.

Я смотрю на это уже несколько часов и перепробовал несколько вещей, чтобы попытаться исправить это безрезультатно.

Ответы [ 4 ]

3 голосов
/ 20 августа 2009

Ширина моей таблицы данных может меняться, так как она находится на одной стороне HDividedBox.

Вот в чем проблема.

Я сталкивался с точно такой же проблемой с шириной DataGridColumn Flex 2 и Flex 3 всякий раз, когда ширина DataGrid не была фиксированной. Единственное решение, которое у меня было, это исправить ширину DataGrid или переключиться на AdvancedDataGrid или другие подобные компоненты.

1 голос
/ 24 мая 2011

Хорошо - мы сами столкнулись с этим при создании поддержки различных режимов ширины столбца. Просто небольшой кусочек информации - если вы хотите явно установить ширину, убедитесь, что вы делаете что-то вроде этого:

var oldPolicy:String = grid.horizontalScrollPolicy;
grid.horizontalScrollPolicy ="on"
//set your widths here
grid.horizontalScrollPolicy =oldPolicy;
1 голос
/ 11 ноября 2010

Вы можете сделать это, я думаю, это ошибка в самой DataGrid.

Если вы установите minWidth = "0" и horizontalScrollPolicy = "{ScrollPolicy.AUTO}" в DataGrid, вы можете затем создать объекты DataGridColumn с фиксированной шириной и обеспечить его надлежащее выполнение.

Однако, похоже, все еще есть проблема с последним столбцом, когда DataGrid будет больше, чем сумма всех фиксированных значений ширины, он будет растягивать окончательный DataGridColumn.

Вы можете обойти это, добавив пустой столбец в конце без текста заголовка и т. Д.

1 голос
/ 20 августа 2009

Я сделал то же самое в AdvancedDataGrid, и он работает. Попробуйте установить эти значения

  horizontalScrollPolicy="on"
  width="100%

, а затем добавьте столбцы, это должно работать с HDividedBox.

...