Как ограничить размер AdvancedDataGrid для его строк с переменной высотой строки - PullRequest
0 голосов
/ 24 августа 2011

Я пытался ограничить размер AdvancedDataGrid его строками. В настоящее время я использую variableRowHeight для true и во время выполнения устанавливаю высоту itemRenderer.

Следовательно, каждый ряд имеет разную высоту. Но я обнаружил, что логика расчета высоты сетки проста и понятна - измерьте высоту первой строки, а затем умножьте ее на количество строк. Пожалуйста, поправьте меня, если я ошибаюсь

Я сделал несколько POC по этой проблеме и обнаружил, что во время события calculateRowHeight -> он вычисляет высоту отдельной строки, но где-то вниз по строке он только умножает rowCount на высоту первой строки. Вместо этого он должен вычислять каждую строку и суммировать высоту.

Пожалуйста, предложите способ преодолеть это.

PS: я попробовал следующие варианты: 1. rowCount = arrayCollection.length 2. dataGrid.height = dataGrid.measureHeightOfItems (0, arrayCollection.length) + dataGrid.headerHeight

Ответы [ 4 ]

1 голос
/ 24 августа 2011

Лучшее, что вы можете сделать, это указать высоту сетки данных и высоту каждого ряда в нем. Вся вещь переменной высоты не согласована.

0 голосов
/ 10 октября 2011

В расширенном методе AdvancedDataGrid может использоваться следующий код:

override protected function measure():void
{
    super.measure();
    if(this.dataProvider != null && this.dataProvider.length > 0)
    {
        this.measuredHeight = this.measureHeightOfItems(0, dataProvider.length);
    }
}

Это вычислит высоту всех строк и соответственно установит высоту сетки данных.

0 голосов
/ 14 сентября 2011

Усовершенствованная сетка данных использует один и тот же методологию переработки из всего списка в flex.Он только создает средства визуализации элементов для визуальных данных на экране.В каждой строке, обнаруженной как невидимая, для нее не создано средство визуализации элементов, поэтому средство визуализации элементов не может измерить и сообщить о высоте сетки, поэтому вы не можете получить точную высоту сетки с переменной высотой строки, установленной вtrue и больше данных, чем умещается на экране.

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

0 голосов
/ 24 августа 2011

Если вы обнаружили, что проблема заключается в этом конкретном методе, возможно, вы можете попытаться расширить AdvancedDataGrid и переопределить метод calculateRowHeight для получения этой суммы.

public class MyAdvancedDatagrid extends AdvancedDataGrid {

    override protected function calculateRowHeight(data:Object, hh:Number, skipVisible:Boolean = false):Number {
     //Your code here
    }

}
...