Как я могу заставить AdvancedDataGrid повторно отображать свои метки при изменении результатов labelFunction? - PullRequest
0 голосов
/ 01 апреля 2010

У меня есть AdvancedDataGrid с пользовательской функцией метки, значение которой может меняться в зависимости от состояния другой формы (в частности, есть выпадающий список для выбора формата отображения времени для некоторых столбцов).

Прямо сейчас у меня есть этот ярлыкФункция:

internal function formatColumnTime(item: Object, column: AdvancedDataGridColumn): String {
    var seconds: Number = item[column.dataField];
    return timeFormat.selectedItem.labelFunction(seconds);
}

internal function formatTimeAsInterval(time: Number): String {
    if (isNaN(time))
        return "";

    var integerTime: int = Math.round(time);

    var seconds: int = integerTime % 60;
    integerTime = integerTime / 60;
    var minutes: int = integerTime % 60;
    var hours: int = integerTime / 60;

    return printf("%02d:%02d:%02d", hours, minutes, seconds);
}

internal function formatTimeAsFractions(time: Number): String {
    if (isNaN(time))
        return "";

    var hours: Number = time / 3600.0;
    return new String(Math.round(hours * 100) / 100);
}

... и объект timeFormat представляет собой поле со списком, элементы которого имеют атрибуты labelFunction formatTimeAsFractions и formatTimeAsInterval.

Столбцы, имеющие форматы времени, имеют значение formatColumnTime в качестве значения labelFunction, поскольку выделение секунд в этой функции и ее передача в средства форматирования сделаны для более тестируемого приложения (IMHO).

Итак, когда значение timeFormat.selectedItem изменяется, я хочу заставить свою сетку пересчитать метки этих столбцов. Какой метод я должен вызвать на это? invalidateProperties() не сработало, так что нет.

Ответы [ 2 ]

0 голосов
/ 01 апреля 2010

Я прошел путь, используя выбранный элемент комбинированного окна в качестве функции labelFunction. Это не так элегантно тестируемо, но работает.

0 голосов
/ 01 апреля 2010

Вы пытались обновить dataProvider? Если это ArrayCollection, это должно работать. В противном случае попробуйте invalidateDisplayList().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...