我有一个带有自定义标签函数的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对象是一个组合框,其中包含labelFunction属性为formatTimeAsFractions和formatTimeAsInterval的项。
具有时间格式的列的labelFunction值为formatColumnTime,因为提取该函数中的秒数并将其传递给格式化程序可以使应用程序更具可测试性。
因此,当timeFormat.selectedItem值改变时,我想强制我的网格重新计算这些列的标签。我必须对它调用什么方法?invalidateProperties()不起作用,所以这是不可能的。
发布于 2010-04-01 23:52:26
我已经走了直接使用组合框的selectedItem作为labelFunction的路线。它不是那么优雅的可测试性,但它是有效的。
发布于 2010-04-01 06:08:40
您有没有尝试刷新dataProvider?如果它是一个ArrayCollection,那么它应该可以工作。否则,请尝试invalidateDisplayList().
https://stackoverflow.com/questions/2556721
复制相似问题