我在AS文件中有一些通用功能,如复制,粘贴等。我想用它们来编辑嵌入在一个应用程序中的不同mxml应用程序中的数据。如果我将子组件的id作为其中一个事件中函数的参数传递,我将该值作为null或父应用程序名称。但我希望子组件的id访问值。请帮忙。
请查看以下代码段:
epfGateTask.mxml
..
<mx:AdvancedDataGrid id="task" resizableColumns="true" initialize="populateArray()"
dataProvider="{gateTaskList}" width="100%" height="100%" horizontalScrollPolicy="auto"
verticalScrollPolicy="auto" selectionMode="multipleCells" editable="true" itemEditBeginning="{editStart(event,task)}" paddingTop="0" paddingBottom="0" lockedColumnCount="5" rowCount="27" sortableColumns="false" liveScrolling="false" variableRowHeight="true" headerWordWrap="true" >
<mx:columns>
<mx:AdvancedDataGridColumn id="gateName" dataField="gateName" headerText="" width="137" wordWrap="true" textAlign="center" editable="false"/>
...
MenuBarUtilities.as
...
var dg_ID :Object ;
public function cut(event: Event)
{
if(selectedData != null && selectedData!="")
{
copy(event);
dg_ID.selectedItem[columnName]= "";
dg_ID.invalidateList();
}
}
public function editStart(event:AdvancedDataGridEvent,id:Object):void
{
dg_ID = id;
columnIndex = event.columnIndex;
columnName = id.columns[columnIndex].dataField;
var dataField: String = id.selectedItem[columnName];
selectedData = dataField;
}
...
此函数用于将数据字段的值保存在临时变量中,以便在复制和粘贴时可以粘贴该值。 在这里,从上面可以看到'id'是(dataGrid id)从AdvancedDataGridEvent传递的内容。现在,在执行主mxml并选择datagrid单元格来剪切值时,会显示空引用错误。函数中的id的值为“epfProgram”,这是主要的mxml名称。并且dg_ID显示为null。 同样,另一个mxml需要相同的功能。使用SWFLoader将这两个mxml放入主mxml(epfProgram.mxml)中。复制,粘贴等按钮出现在主mxml中。请帮我解决这个问题。
答案 0 :(得分:1)
如果没有看到任何代码,我建议您在事件中发送对组件的引用,而不是发送id。实际上,现在我说你可以完全跳过它并通过你在事件监听器中收到的事件的currentTarget属性访问发送组件。