在我的应用程序中,我有一个绑定到RemoteObject的数据网格。该 datagrid具有包含详细信息的相应表单。什么时候 用户点击数据网格中的一行,表格填充表格 DataGrid的selectedItem中的值。
我想以编程方式在我的DataGrid中选择一行 应用程序加载。
为了做到这一点,我必须调用validateNow()和scrollToIndex()
例如。
dg.selectedIndex = i;
dg.validateNow();
dg.scrollToIndex(ⅰ);
我将此代码放在Applications creationComplete处理程序中。
这一切都很有效 - 所需的行会突出显示并被选中 selectedIndex是i。问题是我无法访问数据 填充详细信息表单。当我试图检索 dg.SelectedItem属性 - 它为null。
如何在加载时以编程方式选择网格中的某些行 AND访问行数据?
谢谢
答案 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中的项目。如果您知道要在数据网格中选择哪个项目,只需在源数据中使用该项目来执行表单的初始填充。