Вопрос

Я извлекаю данные 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]), он отображается как правильное значение, поэтому при назначении ширины происходит что-то странное.

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

Это было полезно?

Решение

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

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

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

Другие советы

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

  horizontalScrollPolicy="on"
  width="100%

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

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

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

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

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

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

var oldPolicy:String = grid.horizontalScrollPolicy;
grid.horizontalScrollPolicy ="on"
//set your widths here
grid.horizontalScrollPolicy =oldPolicy;
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top