我需要编写以下事件。我有一个Flex数据网格。当我单击一行时,我应该获取一个特定的列并调用一个远程EJB方法.Flex EJB桥与BlazeDs完美配合。这是我的代码
<mx:DataGrid id="employees" x="100" y="50" dataProvider="{empList}" height="150" click='empHandler();'>
<mx:columns>
<mx:DataGridColumn headerText="empid" dataField="empid" />
</mx:columns>
</mx:DataGrid>
我的员工结构:数字,名字,姓氏,电子邮件,图片,密码都是字符串。 该表包含empids列表。当我选择一个特定的行时,我点击EJB方法将返回整个Employee对象。我正在调用远程方法如下
<mx:RemoteObject id="srv" showBusyCursor="true" destination="quizAppEJB"
fault="mx.controls.Alert.show(event.fault.faultString, 'Error')">
<mx:method name="checkLogin" result="empList=event.result"
fault="mx.controls.Alert.show(event.fault.faultString)">
<mx:arguments>
<username>username.text</username>
<password>password.text</password>
</mx:arguments>
</mx:method>
这是我的empHandler方法。
private function empHandler():void
{
Alert.show('hi');
srv.getEmployeeDetails(empid);
}
我不确定如何设置表格中的empid
username.text password.text
employees.selectedItem.empid
我想将值empDetailList.employee.image设置为图像的图像。我不确定我是否清楚但是如果你有任何疑问会澄清。
答案 0 :(得分:1)
而不是click
尝试在数据网格上侦听itemClick
事件,将事件对象作为处理程序的参数传递:
<mx:DataGrid id="employees" x="100" y="50" dataProvider="{empList}"
height="150" itemClick="empHandler(event)">
事件对象 - 作为mx.events.ListEvent
的实例 - 具有定义
rowIndex
属性
项目的从零开始的索引 与事件有关。
拥有你可以从数据提供者那里获取项目:
private function empHandler(event:ListEvent):void{
srv.getEmployeeDetails(empList.getItemAt(event.rowIndex).id);
}
或者更容易,您可以直接从datagrid获取所选项目
private function empHandler():void{
srv.getEmployeeDetails(employees.selectedItem.id);
}