flex datagrid动态获得渲染器数据

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical"
verticalAlign="middle"
backgroundColor="white"
xmlns:ns1="*" fontSize="12" width="1190" height="832">

<mx:Canvas width="1104" height="740" fontSize="12">
<mx:Script>
<![CDATA[
private var arrColl:XML = <response>
<data><row><taxpayerId>s1</taxpayerId><number>点击此处进行手动分配</number></row>
<row><taxpayerId>4324234233</taxpayerId><number>点击此处进行手动分配</number></row>
<row><taxpayerId>444324467</taxpayerId><number>点击此处进行手动分配</number></row>
<row><taxpayerId>5656767755</taxpayerId><number>点击此处进行手动分配</number></row>
<row><taxpayerId>885675464</taxpayerId><number>点击此处进行手动分配</number></row>
</data>
</response>;

private var idxml:XML = <response>
<data><row><taxpayerId>s1</taxpayerId><number>点击此处进行手动分配</number></row>
<row><taxpayerId>4324234233</taxpayerId><number>点击此处进行手动分配</number></row>
<row><taxpayerId>444324467</taxpayerId><number>点击此处进行手动分配</number></row>
<row><taxpayerId>5656767755</taxpayerId><number>点击此处进行手动分配</number></row>
<row><taxpayerId>885675464</taxpayerId><number>点击此处进行手动分配</number></row>
</data>
</response>;
]]>
</mx:Script>
<mx:DataGrid id="dataGrid"
width="700"
height="206"
  textAlign="center"
dataProvider="{arrColl.data.row}"
editable="true" x="159" y="80">
<mx:columns>

<mx:DataGridColumn headerText="纳税识别号" dataField="taxpayerId"
   editable="false"/>
<mx:DataGridColumn id="sc" headerText="修改为:" dataField="number"
   editable="true"
   width="430"
    itemEditor="ComboBoxOfAddress" editorDataField="code"   />
</mx:columns>
</mx:DataGrid>
<mx:Button label="click "
   click="test()" x="476" y="304">

</mx:Button>




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


public function test():void
{
var result:String = "";
var length:int = arrColl.data.children().length();
for(var i:int=0;i<length;i++){
result+=dataGrid.indexToItemRenderer(i).data.taxpayerId+" 分配到:"+dataGrid.indexToItemRenderer(i).data.number+"\n";
}
Alert.show("jieguo-->" +result);
Alert.show("validatorTaxPayer:  "+validateTaxPayer());
Alert.show("validatorPersonId:"+validatePersonId());
}

/**验证纳税识别好是否已经全部分配,已经全部分配返回true,没有全部分配返回false*/
private function validateTaxPayer():Boolean{
var result:String = "";
var length:int = arrColl.data.children().length();
if(length==0){
return true;
}else{
for(var i:int=0;i<length;i++){
result+=dataGrid.indexToItemRenderer(i).data.number;
}
var regExp:RegExp = new RegExp("手动分配");
return !regExp.test(result);
}
}
/**验证身份证号是否已经全部分配,如果没有需要重新分配的数据则返回true,
* 已经全部分配返回true,没有则返回false*/
private function validatePersonId():Boolean{
var result:String="";
var length:int = idxml.data.children().length();
if(length==0){
return true;
}else{

  for(var i:int=0;i<length;i++){
result+=dataGrid0.indexToItemRenderer(i).data.number;
}
var regExp:RegExp = new RegExp("手动分配");
return !regExp.test(result);
}
}

]]>
</mx:Script>
<mx:Text x="324" y="10" text="部分证件号不能自动分配,请您手动分配(该操作必须执行)" height="32" width="430"/>
<mx:Text x="159" y="50" text="修改纳税识别号信息:" height="32" width="430"/>
<mx:Text x="159" y="336" text="修改身份证号信息:" height="32" width="430"/>
<mx:DataGrid id="dataGrid0"
width="700"
height="206"
  textAlign="center"
dataProvider="{idxml.data.row}"
editable="true" x="159" y="364">
<mx:columns>

<mx:DataGridColumn headerText="纳税识别号" dataField="taxpayerId"
   editable="false"/>
<mx:DataGridColumn id="sc0" headerText="修改为:" dataField="number"
   editable="true"
   width="430"
    itemEditor="ComboBoxOfAddress" editorDataField="code"   />
</mx:columns>
</mx:DataGrid>
<mx:LinkButton x="324" y="644" label="上一步"/>
<mx:LinkButton x="663" y="644" label="下一步"/>

</mx:Canvas>
</mx:Application>



ComboBoxOfAddress文件如下:


<?xml version="1.0" encoding="utf-8"?>
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml"
width="424"
height="24">
<mx:Script>
<![CDATA[
import mx.controls.Alert;
import com.lhhc.common.rpc.RequestService;

/**
* 该方法返回的数据用于替代表格中的文本数据,使用者亦可通过该返回数据的解析出其地点编码值
* 规则:省市必须选择,区县可以不选。所有的为自动分配的数据都必须手动分配。
* */
public function get code():String
{
var addressName:String = town_Combobox0.selectedLabel;
//区县未选中
if(addressName==""||addressName=="请选择")
{
addressName = province_Combobox0.selectedLabel+"-"+ city_Combobox0.selectedLabel;
    //区县未选择并且市也未选
     if(city_Combobox0.selectedLabel==""||city_Combobox0.selectedLabel=="请选择")
     addressName = "分配失败,请你再次手动分配";
}
else{
addressName = province_Combobox0.selectedLabel+"-"+city_Combobox0.selectedLabel
+"-"+town_Combobox0.selectedLabel;
}

return addressName;


}








//省级列表发生改变时触发
private function provinceChange()
{

if (province_Combobox0.selectedIndex == 0)
;
else
{
city_Combobox0.dataProvider=null;
town_Combobox0.dataProvider=null;
var requestForCity:RequestService=new RequestService("publish/getAddress.action");
var parameters:*={"addressCode": province_Combobox0.selectedItem.code};
requestForCity.doRequest("", parameters, initCityList);
// Alert.show(province_Combobox.selectedLabel + province_Combobox.selectedIndex);
}
}

//初始化市级下拉列表
private function initCityList(obj:Object):void
{
city_Combobox0.dataProvider=obj.data.row.caseSources.caseSource;
}

private function initTownList(obj:Object):void
{
town_Combobox0.dataProvider=obj.data.row.caseSources.caseSource;
}

//初始化当前组件时触发
private function initProvince():void
{
var url="publish/getAddress.action";
var request:RequestService=new RequestService(url);
var parameters:*={"addressCode": "000000"};
request.doRequest(null, parameters, addProvince);
}

//添加省下拉框中的数据
private function addProvince(obj:Object):void
{
province_Combobox0.dataProvider=obj.data.row.caseSources.caseSource;

}

//市级列表发生变化时触发
private function cityChange():void
{
if (city_Combobox0.selectedIndex == 0)
;
else
{
var requestForCity:RequestService=new RequestService("publish/getAddress.action");
var parameters:*={"addressCode": city_Combobox0.selectedItem.code};

requestForCity.doRequest("", parameters, initTownList);
}
}
]]>
</mx:Script>
<mx:ComboBox id="province_Combobox0"
labelField="name"
change="provinceChange()"
width="100"
creationComplete="initProvince()"/>
<mx:ComboBox id="city_Combobox0"
labelField="name"
change="cityChange()"
width="150"/>
<mx:ComboBox id="town_Combobox0"
labelField="name"
width="160"/>
</mx:HBox>

猜你喜欢

转载自chenzheng-java.iteye.com/blog/581430
今日推荐