Flex:以编程方式选择某行 - selectedItem为null

时间:2009-12-23 09:11:23

标签: flex datagrid

在我的应用程序中,我有一个绑定到RemoteObject的数据网格。该 datagrid具有包含详细信息的相应表单。什么时候 用户点击数据网格中的一行,表格填充表格 DataGrid的selectedItem中的值。

我想以编程方式在我的DataGrid中选择一行 应用程序加载。

为了做到这一点,我必须调用validateNow()和scrollToIndex()

例如。

dg.selectedIndex = i; dg.validateNow();
dg.scrollToIndex(ⅰ);

我将此代码放在Applications creationComplete处理程序中。

这一切都很有效 - 所需的行会突出显示并被选中 selectedIndex是i。问题是我无法访问数据 填充详细信息表单。当我试图检索 dg.SelectedItem属性 - 它为null。

如何在加载时以编程方式选择网格中的某些行 AND访问行数据?

谢谢

2 个答案:

答案 0 :(得分:8)

使用

dg.invalidateList();
dg.callLater(setRows, [1]);

function selRows(indices:Array):void {
  dg.selectedIndices = indices;
  dg.validateNow();
  dg.scrollToRow(indices[0]);
}

基本上,如果您要更改DG数据并在同一流程中选择项目,您的选择将被ListBase方法覆盖,您必须在当前GUI更新后设置您需要使用callLater方法的选择。

答案 1 :(得分:0)

datagrid的选定项目只是指向dataProvider中的项目。如果您知道要在数据网格中选择哪个项目,只需在源数据中使用该项目来执行表单的初始填充。