dataGrid 的 itemRenderer 问题!请帮忙
- Java code
<mx:DataGrid dataProvider="{taskListArr}"> <mx:columns> <mx:DataGridColumn headerText="任务名" dataField="MyName" headerStyleName="centered"/> <mx:DataGridColumn headerText="操作" width="70" resizable="false" headerStyleName="centered"> <mx:itemRenderer> <mx:Component> <mx:Button fontSize="12" label="删除" click="openEditWindow(data)"> <mx:Script> <![CDATA[ private function openEditWindow(data:Object){ //在这里如何得到 MyName 的值? } ]]> </mx:Script> </mx:Button> </mx:Component> </mx:itemRenderer> </mx:DataGridColumn> </mx:columns></mx:DataGrid>
[解决办法]
没太理解楼主的用意;一般很少这么用吧
可以给Grid注册focusin事件通过选中项获取值如
- Assembly code
<?xml version="1.0"?><!-- DataGrid control example. --><mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"> <mx:XMLList id="employees"> <employee> <name>Christina Coenraets</name> <phone>555-219-2270</phone> <email>ccoenraets@fictitious.com</email> <active>true</active> </employee> <employee> <name>Joanne Wall</name> <phone>555-219-2012</phone> <email>jwall@fictitious.com</email> <active>true</active> </employee> <employee> <name>Maurice Smith</name> <phone>555-219-2012</phone> <email>maurice@fictitious.com</email> <active>false</active> </employee> <employee> <name>Mary Jones</name> <phone>555-219-2000</phone> <email>mjones@fictitious.com</email> <active>true</active> </employee> </mx:XMLList> <mx:Panel title="DataGrid Control Example" height="100%" width="100%" paddingTop="10" paddingLeft="10" paddingRight="10"> <mx:Label width="100%" color="blue" text="Select a row in the DataGrid control."/> <mx:DataGrid id="dg" width="100%" height="100%" rowCount="5" dataProvider="{employees}"> <mx:columns> <mx:DataGridColumn dataField="name" headerText="Name"/> <mx:DataGridColumn dataField="phone" headerText="Phone"/> <mx:DataGridColumn dataField="email" headerText="Email"/> </mx:columns> </mx:DataGrid> <mx:Form width="100%" height="100%"> <mx:FormItem label="Name"> <mx:Label text="{dg.selectedItem.name}"/> </mx:FormItem> <mx:FormItem label="Email"> <mx:Label text="{dg.selectedItem.email}"/> </mx:FormItem> <mx:FormItem label="Phone"> <mx:Label text="{dg.selectedItem.phone}"/> </mx:FormItem> </mx:Form> </mx:Panel></mx:Application>
[解决办法]
parentDocument.MyName.XXXX
[解决办法]
private function openEditWindow(data:Object):void{
// data为当前行记录.
Alert.show(data.MyName);
}
[解决办法]
[解决办法]
用this.data.MyName可以获取的啊
[解决办法]
[解决办法]
outerDocument.MyName.XXXX
[解决办法]
很简单的啦,data.MyName就可以了
[解决办法]
<mx:DataGrid dataProvider="{taskListArr}">
<mx:columns>
<mx:DataGridColumn headerText="任务名" dataField="MyName" headerStyleName="centered"/>
<mx:DataGridColumn headerText="操作" width="70" resizable="false" headerStyleName="centered">
<mx:itemRenderer>
<mx:Component>
<mx:Button fontSize="12" label="删除" click="openEditWindow(data)">
<mx:Script>
<![CDATA[
var name:String ="";
override public function set data(value:Object):void
{
super.data = value;
name = value.name;
}
private function openEditWindow(data:Object)
{
//重写set data 方法 可以获取到你要的名字
}
]]>
</mx:Script>
</mx:Button>
</mx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>
</mx:columns>
</mx:DataGrid>
[解决办法]
直接data.MyName就可以了,data就是itemRenderer当前行的object,这样data.MyName也就是当前行的MyName.