Apache flex FlexDataGrid:以编程方式高亮显示行
这看起来应该非常简单,但我甚至找不到如何在FlexDataGrid中循环行 基本上,我要完成的是类似以下伪代码的工作:Apache flex FlexDataGrid:以编程方式高亮显示行,apache-flex,validation,actionscript,datagrid,Apache Flex,Validation,Actionscript,Datagrid,这看起来应该非常简单,但我甚至找不到如何在FlexDataGrid中循环行 基本上,我要完成的是类似以下伪代码的工作: for each(var row:Row in myDataGrid.Rows) { if(row.DataObject.Number == 1) { row.Color = Red; } } 我正在尝试创建一个保存按钮,单击该按钮后,它要么处理保存,要么突出显示无效行,并弹出一条消息,告诉用户行无效的原因。由于其他一些复杂性,我无法在
for each(var row:Row in myDataGrid.Rows)
{
if(row.DataObject.Number == 1)
{
row.Color = Red;
}
}
我正在尝试创建一个保存按钮,单击该按钮后,它要么处理保存,要么突出显示无效行,并弹出一条消息,告诉用户行无效的原因。由于其他一些复杂性,我无法在输入每一行时对其进行验证。感谢您的帮助!谢谢。数据网格旨在由其数据驱动,而不是直接操纵。一种方法是向提供程序中的数据对象添加某种属性(例如valid),并向呈现程序添加代码,以根据valid的状态更改其外观。通过这种方式,您可以循环数据提供程序中的对象,并根据验证检查设置有效属性,这将导致数据网格中的行自动更改其外观
希望这能有所帮助。尝试以下方法:
for each(var o:Object in myDataGrid.dataProvider)
{
if(o.Number == 1) {
myDataGrid.selectedItems.push(o);
}
}
在mxml中,可以将数据网格的selectionColor设置为红色。见:
让我知道这是否适合你 我不确定您是否可以在数据网格本身上执行此操作,但是如果您为每个项目都有一个项目渲染器,那么您可以在那里使用高亮显示逻辑 基本上,您可以定义datagrid的项目呈现器类: 然后将类ItemRenderClass定义为实现IDataRenderer:
implements="mx.core.IDataRenderer"
这是一个过于简单的解释,假设您可以自己解决这个问题:我通过覆盖集合数据实现了这一点。我在下面提供了示例代码
override public function set data(value:Object):void
{
super.data=value;
if(value!=null && value.hasOwnProperty("state") && value.state == "Final State"){
setStyle("color", 0xb7babc);
}else{
setStyle("color", 0x000000);
}
this.selectable=false;
super.invalidateDisplayList();
}