Flex DataGrid查询

时间:2010-11-16 16:59:11

标签: flex

我需要编写以下事件。我有一个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设置为图像的图像。我不确定我是否清楚但是如果你有任何疑问会澄清。

1 个答案:

答案 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);
}