弹出窗口类:CusterEdit.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" width="400" height="300"
creationComplete="initComponent()"
showCloseButton="true"
close="closeWindow()">
<mx:Script>
<![CDATA[
/* 数据xml格式如下:
<items>
<item label="Tom" data="num001"/>
<item label="Lucy" data="num002"/>
</items>
*/
import mx.managers.PopUpManager;
import mx.rpc.events.ResultEvent;
import mx.controls.Alert;
import mx.collections.ArrayCollection;
[Bindable]public var mainApp:Object = null;
[Bindable]public var headTitle:String;
[Bindable]public var url:String;
[Bindable]public var selectedItem:Object;
[Bindable]public var callbackFunction:Function; //回调函数
[Bindable]public var customer_codeS:String;//客户编码
[Bindable]public var customer_nameS:String;//客户名称
[Bindable]public var coordinatexS:String;//x坐标
[Bindable]public var coordinateyS:String;//y坐标
[Bindable]public var lineArr:ArrayCollection;//线路计划
[Bindable]public var ship_periodS:String;//配送周期
[Bindable]
public var cards:ArrayCollection = new ArrayCollection(
[ {label:"Visa",data:1}, //这样的数组分配方式也是第一次见:) 经过分析才学习到:这里的"data"似乎是自定义的变量名,label是组件"label"
{label:"MasterCard", data:2},
{label:"American Express", data:3} ]);
private function initComponent():void {
//listDataService.url = url;
listDataService.send();
}
//closeWindow
private function closeWindow():void {
PopUpManager.removePopUp(this);
}
private function submit():void {
PopUpManager.removePopUp(this);
if (coordinatex.text != null && coordinatey.text != null) {
//调用父窗体的方法并以参数形式返回选择结果
callbackFunction.call(mainApp, coordinatex.text,coordinatey.text,ship_period.text,line.selectedItem["data"],line.selectedItem["label"]);
} else{
Alert.show("怎么走了这");
}
}
private function mySelection(oEvent:Event):void {
selectedItem = oEvent.target.selectedItem;
}
private function initListData(event:ResultEvent):void {
//使用HTTPService返回的xml数据,初始化List数据
//dataList.dataProvider = event.result.items.item;
}
]]>
</mx:Script>
<mx:HTTPService id="listDataService" url="{url}" showBusyCursor="true" result="initListData(event)" />
<mx:Label text="{headTitle}"/>
<mx:FormItem label="客户编码:" width="237">
<mx:Text id="customer_code" width="124" height="31"/>
</mx:FormItem>
<mx:FormItem label="客户名称:" width="237">
<mx:Text id="customer_name" width="124"/>
</mx:FormItem>
<mx:FormItem label="经度坐标:" width="237">
<mx:TextInput id="coordinatex" width="124"/>
</mx:FormItem>
<mx:FormItem label="纬度坐标:" width="237">
<mx:TextInput id="coordinatey" width="124"/>
</mx:FormItem>
<mx:FormItem label="配送周期:" width="237">
<mx:TextInput id="ship_period" width="145"/>
</mx:FormItem>
<mx:FormItem label="线 路:" width="237">
<mx:ComboBox id="line" width="147"/>
</mx:FormItem>
<mx:VBox width="100%">
<mx:Button label="保存" click="submit();"/>
</mx:VBox>
</mx:TitleWindow>
父窗体:CustomerList.mxml里面用的是DataGrid 修改、地图定位
<?xml version="1.0" encoding="utf-8"?>
<mx:TitleWindow xmlns:mx="http://www.adobe.com/2006/mxml"
width="990"
height="304"
showCloseButton="true"
creationComplete="init()"
close="{PopUpManager.removePopUp(this)}"
title="零售户信息"
fontSize="12"
xmlns:components="com.bluesword.cargps.components.*">
<mx:Script source="utils.as"/>
<mx:Script>
<![CDATA[
import com.bluesword.cargps.socket.CustomerMap;
import com.bluesword.cargps.utils.Global;
import mx.controls.Alert;
import mx.controls.dataGridClasses.DataGridColumn;
import com.bluesword.cargps.socket.ChengWeiData;
import mx.collections.ArrayCollection;
import mx.rpc.events.ResultEvent;
import mx.rpc.remoting.RemoteObject;
import mx.managers.PopUpManager;
import mx.events.ListEvent;
import mx.rpc.events.ResultEvent;
import mx.events.DataGridEvent;
import com.esri.ags.Map;
import com.bluesword.cargps.AcceptUserInfo
import mx.collections.ArrayCollection;
import mx.rpc.events.FaultEvent;
import com.bluesword.cargps.frame.report.CusterEdit;
import mx.containers.TitleWindow;
import mx.managers.PopUpManager;
private static var flexSession:RemoteObject = null;
private var customerService:RemoteObject;
public var userInfo:Object;
[Bindable]
private var array_qy:ArrayCollection;
[Bindable]
private var array_start:ArrayCollection;
[Bindable]
private var array_info:ArrayCollection;
[Bindable] public var array_line:ArrayCollection;
[Bindable]
public var map:Map;
public var acceptUserInfo:AcceptUserInfo;
public var checkBox_info:String = new String();
private function init():void
{
customerService = new RemoteObject();
customerService.destination = "story.customerService";
flexSession = new RemoteObject();
flexSession.addEventListener(FaultEvent.FAULT,faultHandler);
flexSession.destination="flexSession";
//根据所选情况进行查询
customerService.getCustomerInfo.addEventListener(ResultEvent.RESULT, getCarMonthOilUseInfoHandler);
customerService.getCustomerType.addEventListener(ResultEvent.RESULT,addCustType);
customerService.getCustomerType("CUSTOMER_STATUS");
customerService.onSubmit.addEventListener(ResultEvent.RESULT,getSubmit);
//初始化客户类型
addCustStart();
flexSession.getLoginUser.addEventListener(ResultEvent.RESULT,getFlexSession);//获得角色
flexSession.getLoginUser();
//获得线路
customerService.getLine.addEventListener(ResultEvent.RESULT,getLine);
customerService.getLine();
}
//获得线路
public function getLine(event:ResultEvent):void{
array_line = event.result as ArrayCollection;
}
//获得权限
public function getFlexSession(event:ResultEvent):void{
var tmp:Object = event.result;
userInfo = String(tmp.role_id);
}
//绑定客户类型
private function addCustType(event:ResultEvent):void
{
array_qy = event.result as ArrayCollection;
var def:Object = {
type_code: "0",
type_name: "全部"
};
array_qy.addItemAt(def, 0);
custType.selectedIndex = 0;
}
//绑定状态
private function addCustStart():void
{
array_start = new ArrayCollection;
var str1:Object = {start_code:"1",start_name:"提交"};
array_start.addItemAt(str1,0);
var str2:Object = {start_code:"2",start_name:"未提交"};
array_start.addItemAt(str2,1);
startM.selectedIndex = 0;
}
/**
* 获取车辆日里程油耗统计信息
*/
private function getCarMonthOilUseInfoHandler(event:ResultEvent):void
{
array_info = event.result as ArrayCollection;
// gc.refresh();
var item:Object = (myDG.dataProvider as ArrayCollection).getItemAt(1);
if (array_info.length > 0)
Alert.show("查询完毕");
else
Alert.show("查询完毕,无信息");
}
/**
* 根据指定的条件查询
*/
private function onQuery():void
{
customerService.getCustomerInfo(customer_code.text,customer_name.text,startTime.text,endTime.text,custType.selectedItem.type_code,startM.selectedItem.start_code);
}
/**
* 导出为Excel文件
*/
private function onCreate():void
{
loadDGInExcel(myDG, Global.EXCEL_JSP, "零售户信息表");
}
/**
* 双击车辆树型列表, 居中定位该车
*/
public function onDoubleClick(event:ListEvent):void
{
var datagrid:DataGrid = event.target as DataGrid;
var cols:DataGridColumn = myDG.columns[event.columnIndex];
var customer_no = datagrid.selectedItem["customer_no"];
var customer:CustomerMap = new CustomerMap(map);
customer.showCustomerOnMap(customer_no);
}
//保存
private function update(e:ListEvent)
{
/*var colIndex:Number = e.columnIndex;
var datagrid:DataGrid = e.target as DataGrid;
var col:DataGridColumn = datagrid.columns[colIndex];
var x:Number = datagrid.selectedItem["coordinatex"];
var y:Number = datagrid.selectedItem["coordinatey"];*/
//acceptUserInfo
myDG.invalidateList();
}
public function onEditEnd(event:DataGridEvent):void
{
/*if(event.reason == DataGridEventReason.NEW_ROW || event.reason == DataGridEventReason.OTHER){
acItemsSelected = dg.selectedItem;
var code:String = acItemsSelected.customer_code;
var x:Number = acItemsSelected.coordinatex;
var y:Number = acItemsSelected.coordinatey;
customerService.update(code,x,y);
}*/
if(event.dataField=="coordinatex"){
var datagrid:DataGrid = event.target as DataGrid;
var cols:DataGridColumn = myDG.columns[event.columnIndex];
//编辑后新的值
var x:Number = myDG.itemEditorInstance[cols.editorDataField];
var code:String = datagrid.selectedItem["customer_code"];
var y:Number = datagrid.selectedItem["coordinatey"];
customerService.update(code,x,y);
}
if(event.dataField == "coordinatey"){
var datagrid:DataGrid = event.target as DataGrid;
var cols:DataGridColumn = myDG.columns[event.columnIndex];
var y:Number = myDG.itemEditorInstance[cols.editorDataField];
var code:String = datagrid.selectedItem["customer_code"];
var x:Number = datagrid.selectedItem["coordinatex"];
customerService.update(code,x,y);
}
}
//修改方法
public function onEdit():void
{
var x:Number = myDG.selectedItem["coordinatex"];
var code:String = myDG.selectedItem["customer_code"];
var name:String = myDG.selectedItem["customer_name"];
var y:Number = myDG.selectedItem["coordinatey"];
var ship_period = myDG.selectedItem["ship_period"];
//customerService.update(code,x,y);
var titleWindowInstance:CusterEdit = CusterEdit(PopUpManager.createPopUp(this, CusterEdit, false));
titleWindowInstance.title = "零售户资料修改";
titleWindowInstance.width = 400;
titleWindowInstance.height = 300;
titleWindowInstance.mainApp = this;
titleWindowInstance.customer_code.text = code;//客户code
titleWindowInstance.customer_name.text = name;//客户名称
titleWindowInstance.coordinatex.text = x.toString();//x坐标
titleWindowInstance.coordinatey.text = y.toString();//y坐标
titleWindowInstance.ship_period.text = ship_period;//配送周期
titleWindowInstance.line.dataProvider = array_line;//线路
titleWindowInstance.url="http://localhost:9090/index.mxml";
titleWindowInstance.callbackFunction = this.myFunction;
PopUpManager.centerPopUp(titleWindowInstance);
}
public function myFunction(x:String,y:String,ship_periodS:String,lineCode:String,lineName:String):void {
Alert.show("x:"+x+"y:"+y+"配送周期"+ship_periodS+lineCode+lineName);
//array_info.getItemAt(myDG.selectedIndex).coordinatex = x;
//array_info.setItemAt(x,);
var customer_code:String = myDG.selectedItem["customer_code"];//客户编号
var customer_name:String = myDG.selectedItem["customer_name"];//客户名称
var manager_code:String = myDG.selectedItem["manager_code"];//客户经理CODE
var manager_name:String = myDG.selectedItem["manager_name"];//客户经理名称
var customer_no:String = myDG.selectedItem["customer_no"];//专卖证号
var customer_status:String = myDG.selectedItem["customer_status"];//客户类型
var customer_status_code:String = myDG.selectedItem["customer_status_code"];//客户类型编码
var customer_type_name:String = myDG.selectedItem["customer_type_name"];//状态
var customer_start_type:String = myDG.selectedItem["customer_start_type"];//状态编码
var temp:Object = {customer_code:customer_code,
customer_name:customer_name,
manager_code:manager_code,
manager_name:manager_name,
coordinatex:x,
coordinatey:y,
ship_period:ship_periodS,
ship_line_id:lineCode,
ship_line_name:lineName,
customer_no:customer_no,
customer_status:customer_status,
customer_status_code:customer_status_code,
customer_type_name:customer_type_name,
customer_start_type:customer_start_type
};
array_info.setItemAt(temp,myDG.selectedIndex);//修改
}
//定位方法
public function onLocation():void
{
var customer_no = myDG.selectedItem["customer_no"];
var customer:CustomerMap = new CustomerMap(map);
customer.showCustomerOnMap(customer_no);
}
//查询后台错误处理
public function faultHandler(evt:FaultEvent):void{
trace(evt.fault.message);
}
//提交
public function onSubmit():void
{
if(checkBox_info!="" && checkBox_info.split(";").length>0){
customerService.onSubmit(checkBox_info);
}else{
Alert.show("请选择要提交的客户!");
}
}
public function getSubmit(event:ResultEvent):void
{
var outs:String = String(event.result);
if(outs=="提交成功") onQuery();
Alert.show(outs);
}
public function clickHanlder(obj:Object):void{
if(obj.chxBox.selected){
checkBox_info += array_info.getItemAt(myDG.selectedIndex).customer_code+";";
Alert.show(checkBox_info);
}else{
var code:String = array_info.getItemAt(myDG.selectedIndex).customer_code;
var newArr:String = new String();
if(checkBox_info!=null && checkBox_info.length>0){
var arr:Array = checkBox_info.split(";");
for(var i:Number=0;i<arr.length;i++){
var s:String = String(arr[i]);
if(s!=code){
newArr += s+";";
}
}
}
checkBox_info = newArr ;
}
}
]]>
</mx:Script>
<mx:Canvas width="100%"
height="100%">
<mx:FormItem x="231.5"
y="10"
label="客户编号:"
width="71">
</mx:FormItem>
<mx:FormItem x="6"
y="10"
label="客户名称:">
</mx:FormItem>
<mx:TextArea id="customer_code" x="310.5" y="11" width="94.5" leading="10" height="22">
</mx:TextArea>
<mx:FormItem x="7"
y="43"
label="新增用户日期:"
width="183"
horizontalAlign="left">
<components:CusDateField id="startTime"
width="104"
height="24"
defFormatString="YYYY-MM-DD"/>
</mx:FormItem>
<mx:FormItem x="191"
y="43"
label="-"
width="174"
horizontalAlign="left">
<components:CusDateField id="endTime"
width="104"
height="24"
defFormatString="YYYY-MM-DD"/>
</mx:FormItem>
<mx:FormItem label="客户类型:" y="41" x="367">
<mx:ComboBox id="custType"
width="89"
labelField="type_name"
dataProvider="{array_qy}">
</mx:ComboBox>
</mx:FormItem>
<mx:FormItem label="状态" y="41" x="534" width="114">
<mx:ComboBox id="startM"
labelField="start_name"
dataProvider="{array_start}" width="68">
</mx:ComboBox>
</mx:FormItem>
<mx:Button x="413"
y="9"
label="查询"
click="onQuery()"
width="69"/>
<mx:Button x="509"
y="9"
label="提交"
click="onSubmit()"
width="69"/>
<mx:TabNavigator x="0"
y="76"
width="100%"
height="80%">
<mx:Canvas label="零售户信息"
id="carsta"
width="100%"
height="100%"
horizontalScrollPolicy="off"
verticalScrollPolicy="off">
<mx:DataGrid id="myDG"
x="0"
y="0"
width="{carsta.width}"
height="{carsta.height}"
dataProvider="{array_info}" editable="true"
>
<mx:columns>
<mx:DataGridColumn headerText="选择" editable="false">
<mx:itemRenderer>
<mx:Component>
<mx:HBox>
<mx:CheckBox id="chxBox" label="{data.name}" name="custCheck" click="outerDocument.clickHanlder(this)"/>
</mx:HBox>
</mx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>
<mx:DataGridColumn dataField="customer_code" headerText="客户编号" editable="false"/>
<mx:DataGridColumn dataField="customer_name" headerText="客户名称" editable="false"/>
<mx:DataGridColumn dataField="manager_code" headerText="客户经理编号" editable="false"/>
<mx:DataGridColumn dataField="manager_name" headerText="客户经理名称" editable="false"/>
<mx:DataGridColumn dataField="coordinatex" headerText="经度坐标" editable="true"/>
<mx:DataGridColumn dataField="coordinatey" headerText="纬度坐标" editable="true"/>
<mx:DataGridColumn dataField="ship_period" headerText="配送周期" editable="false"/>
<mx:DataGridColumn dataField="ship_line_id" headerText="线路ID" visible="false"/>
<mx:DataGridColumn dataField="ship_line_name" headerText="线路名称" editable="false"/>
<mx:DataGridColumn dataField="customer_no" headerText="专卖证号" visible="false"/>
<mx:DataGridColumn dataField="customer_status" headerText="客户类型" editable="false"/>
<mx:DataGridColumn dataField="customer_status_code" headerText="客户类型编码" visible="false"/>
<mx:DataGridColumn dataField="customer_type_name" headerText="状态" editable="false"/>
<mx:DataGridColumn dataField="customer_start_type" headerText="状态编码" visible="false"/>
<mx:DataGridColumn headerText="操作1" editable="false">
<mx:itemRenderer>
<mx:Component>
<mx:Button label="修改" click="outerDocument.onEdit()"/>
</mx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>
<mx:DataGridColumn headerText="操作2" editable="false">
<mx:itemRenderer>
<mx:Component>
<mx:Button label="定位" click="outerDocument.onLocation()"/>
</mx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>
</mx:columns>
</mx:DataGrid>
</mx:Canvas>
</mx:TabNavigator>
<mx:TextArea id="customer_name"
width="99"
x="93" y="11" height="20">
</mx:TextArea>
</mx:Canvas>
</mx:TitleWindow>