0

我在 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 并选择一个数据网格单元格来剪切值时,会显示空引用错误。函数中的 id 的值为“epfProgram”,即主 mxml 名称。并且 dg_ID 显示为空。同样,另一个 mxml 也需要相同的功能。这两个 mxml 都使用 SWFLoader 放入主 mxml(epfProgram.mxml) 中。并且复制、粘贴等按钮存在于主 mxml 中。请帮我解决这个问题。

4

1 回答 1

1

在没有看到任何代码的情况下,我建议您在事件中发送对组件的引用,而不是发送 id。实际上,既然我说您可能完全跳过它并通过您在事件侦听器中收到的事件的 currentTarget 属性访问发送组件。

于 2010-07-16T15:37:06.793 回答