Actionscript 3 灵活:在nextLevelRenderer中访问数据

Actionscript 3 灵活:在nextLevelRenderer中访问数据,actionscript-3,apache-flex,flex4,Actionscript 3,Apache Flex,Flex4,我试图访问FlexDataGrid的nextLevelRenderer中定义的CheckBoxList组件。你是怎么做到的 我想我可以使用getLevelForItem(arg)并为FlexDataGrid传入selectedItem,但我没有取得任何进展 此外,是否有一个灵活的在线教程的好地方?我什么也找不到 谢谢你的帮助 Fumeng,尝试访问cell对象可能不是最好的方法。在级别渲染器中,当用户修改复选框列表时,您应该在数据提供程序上设置一些属性(如果设置了(父级为IFlexDataGri

我试图访问FlexDataGrid的nextLevelRenderer中定义的CheckBoxList组件。你是怎么做到的

我想我可以使用getLevelForItem(arg)并为FlexDataGrid传入selectedItem,但我没有取得任何进展

此外,是否有一个灵活的在线教程的好地方?我什么也找不到


谢谢你的帮助

Fumeng,尝试访问cell对象可能不是最好的方法。在级别渲染器中,当用户修改复选框列表时,您应该在数据提供程序上设置一些属性(如果设置了(父级为IFlexDataGridCell)。rowInfo.data,您将获得关联数据对象的句柄。然后您可以直接从数据对象访问该值

如果您真的必须使用单元格,网格有一个bodyContainer对象,它可以让您进入网格的腹部。有API方法可以直接获取数据单元格,但没有用于级别渲染器单元格的方法。对于这些方法,您需要在行中循环

for each(var row:RowInfo in bodyContainer.rows) //all body rows
{
  if(row.rowPositionInfo.rowType == RowPositionInfo.ROW_TYPE_RENDERER){
    for each(var cell:ComponentInfo in row.cells){
      if(cell.component is FlexDataGridLevelRendererCell){
          //this will be your renderer
          var yourRenderer:UIComponent = cell.component.renderer as UIComponent;
          //depending on where you have placed the CBL, 
          //one of yourRenderer.children should be the CBL
      }
    }
  }
}

还有一件事要记住。由于行是循环使用的,因此只有在调用此代码时当前呈现的情况下,才能使用上述代码获取列表。因此,如果用户进行更改、更新列表、滚动出视图,然后单击“保存”按钮,此代码将无法获取列表。因此,我们建议使用第一种向上更新的方法与数据提供商约会。非常感谢您的全面回复…非常有用。