flex datagrid - средства визуализации элементов и пропуск строк

HI,

У меня есть datagrid с 6 столбцами, каждый со своим собственным средством визуализации элементов. В первом столбце я хочу иметь возможность проверить и посмотреть, содержит ли столбец какие-либо действительные данные, если нет, то я хочу пропустить эту строку и перейти к следующей. Другими словами, мне нужен способ сообщить моей сетке данных, что нужно прекратить обработку остальных средств визуализации элементов для текущего объекта данных и перейти к следующему. Любые идеи?


person cdugga    schedule 29.06.2009    source источник


Ответы (2)


Я бы сказал, что лучше всего использовать filterFunction. в объектах ListCollectionView (например, ArrayCollection). Это позволяет вам отфильтровывать объекты, которые вы не хотите отображать в DataGrid, до того, как они будут отображены в сетке, и позволит избежать полной обработки всех itemRenderers.

person Dan    schedule 29.06.2009

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

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

Вы можете найти информацию о listData здесь: http://livedocs.adobe.com/flex/3/langref/mx/controls/dataGridClasses/DataGridListData.html

Чтобы проверить предыдущие значения, вы можете написать что-то вроде этого:

var dgListData:DataGridListData = DataGridListData( listData );

// Process all columns before the current one.
for ( var i:int = 0; i < dgListData.columnIndex; i++)
{
    // Do something here to examine previous data

    // If we should stop processing based on previous values
    // then hide everything inside of this renderer (perhaps
    // move to a state name 'empty' that has no children), else
    // move to the state that renders something.
    currentState = shouldSkipObject ? 'empty' : 'normal';
}

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

person darronschall    schedule 29.06.2009