如何通过项目编辑器FX:组件组合框编辑器更新单元格后,在文本框中获取Datagrid单元格的值

时间:2014-05-12 04:14:35

标签: actionscript-3 flex adobe flex4.6

如何在 {s:GridColumn s:itemEditor fx:Component s:ComboBoxGridItemEditor s:dataProvider>]}

更新单元格后,在文本框中获取Datagrid Cell的值

这里我使用Webservice来获取 datagrid 中的数据,现在我想更新我的最后一个GridView列。在项目编辑器中,点击时,我会从下拉列表中获取下拉列表 ComboboxGridItemEditor和Array List作为此列的Dataprovider 。我想在更改时更新文本框中的值。

您会看到我在我的应用程序中使用的示例。

使用的资源:

http://help.adobe.com/en_US/flex/using/WS0ab2a460655f2dc3-427f401412c60d04dca-7ff8.html

http://help.adobe.com/en_US/Flex/4.0/UsingSDK/WS2db454920e96a9e51e63e3d11c0bf69084-7ca4.html

<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
    xmlns:s="library://ns.adobe.com/flex/spark"
    xmlns:mx="library://ns.adobe.com/flex/mx"
    xmlns:vtrservices="services.vtrservices.*"
    xmlns:vtrservices1="services.vtrservices1.*"
    width="1122" height="632">

<s:layout>
  <s:VerticalLayout/>
  </s:layout>

  <fx:Script>
  <![CDATA[
  import mx.controls.Alert;
  import mx.events.FlexEvent;

  import spark.components.Grid;
  import spark.events.*;
  import spark.events.GridSelectionEvent;

  protected function selectionChangeHandler(event:GridSelectionEvent):void {
  const eventGrid:Grid = event.currentTarget.grid;
  var currentIndx:int = eventGrid.selectedIndex;
  var currentDataItem:Object = eventGrid.selectedItem;
  selIndex.text = String(currentIndx);
  selLName.text = String(currentDataItem.Status);
  }


  import spark.components.gridClasses.GridColumn;


  protected function dgTasks_creationCompleteHandler(event:FlexEvent):void
  {
  GetMyTasksNew1Result.token = vtrServices1.GetMyTasksNew1(451);
  }

  ]]>
  </fx:Script>
<fx:Declarations>
  <s:CallResponder id="GetMyTasksNew1Result"/>
  <vtrservices1:VtrServices1 id="vtrServices1"
    fault="Alert.show(event.fault.faultString + '\n' + event.fault.faultDetail)"
    showBusyCursor="true"/>
  </fx:Declarations>




  <s:DataGrid id="dgTasks" width="100%" height="181"
  creationComplete="dgTasks_creationCompleteHandler(event)" editable="true" selectionChange="selectionChangeHandler(event)"
  variableRowHeight="true"  >
  <s:columns>
  <s:ArrayList>
  <s:GridColumn dataField="AssigneeName" headerText="AssigneeName" editable="false"></s:GridColumn>
  <s:GridColumn dataField="Priority" headerText="Priority" editable="false"></s:GridColumn>
  <s:GridColumn dataField="StartTime" headerText="StartTime" editable="false"></s:GridColumn>
  <s:GridColumn dataField="EndTime" headerText="EndTime" editable="false"></s:GridColumn>
  <s:GridColumn dataField="Progress" headerText="Progress" ></s:GridColumn>
  <s:GridColumn dataField="Status" headerText="Status" >
  <s:itemEditor  >
  <fx:Component>
  <s:ComboBoxGridItemEditor>
  <fx:Script>
  <![CDATA[
  ]]>
  </fx:Script>
  <s:dataProvider>
  <s:ArrayList >
  <fx:String>Open</fx:String>
  <fx:String>In Progress</fx:String>
  <fx:String>In Progress On Hold</fx:String>
  <fx:String>In Approval</fx:String>
  <fx:String>Reopened</fx:String>
  <fx:String>Closed</fx:String>
  <fx:String>Deleted</fx:String>
  </s:ArrayList>
  </s:dataProvider>
  </s:ComboBoxGridItemEditor>
  </fx:Component>
  </s:itemEditor>
  </s:GridColumn>
  </s:ArrayList>
  </s:columns>
  <s:AsyncListView list="{GetMyTasksNew1Result.lastResult}"/>
  </s:DataGrid>

  <s:Label text="Selected index:"/>
  <s:TextArea id="selIndex" height="50"/>

  <s:Label text="Selected Last Name:"/>
  <s:TextArea id="selLName" height="50"/>

</s:WindowedApplication>

任何帮助都将受到极大的赞赏

由于

1 个答案:

答案 0 :(得分:0)

我建议根据AsyncListView创建自己的类,然后重写方法itemUpdated。从那里,您可以调度自定义Event以将更改传播到其他UI组件。

请参阅:http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/mx/collections/AsyncListView.html#itemUpdated()