我有一个带有自定义标签功能的AdvancedDataGrid,其值可以根据其他表单状态进行更改(具体来说,有一个下拉列表可以选择某些列的时间显示格式)。
现在,我有这个labelFunction:
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对象是一个组合框,其中的itemsFunction属性为formatTimeAsFractions
和formatTimeAsInterval
。
具有时间格式的列具有formatColumnTime
作为labelFunction
值,因为提取该函数中的秒数并将其传递给为更可测试的应用程序(IMHO)制作的格式化程序。
因此,当timeFormat.selectedItem
值发生变化时,我想强制我的网格重新计算这些列的标签。我必须采用什么方法? invalidateProperties()
没有用,所以就这样了。
答案 0 :(得分:0)
您是否尝试过刷新dataProvider?如果它是ArrayCollection
,那应该有效。否则请尝试invalidateDisplayList().
答案 1 :(得分:0)
我已经走了直接使用组合框的selectedItem作为labelFunction的路线。它不是优雅可测试的,但它可以工作。