两个itemRenderer之间如何传值?

lzp4881 2008-12-30 05:33:25
datagrid中有两个itemRenderer,都是ComboBox,当前一个ComboBox改变后,如何把值传给后一个ComboBox?
就象省市联动这样的,当选择了省后后面的市就跟着变化。
谁能请给个例子,记住这两个ComboBox不能放到一个itemRenderer里面,放到一个itemRenderer里我会,我就想知道它们分别放的时候应该怎么弄。
...全文
459 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
lixianyi08 2009-02-16
  • 打赏
  • 举报
回复
学习学习啦
xxcn2007 2009-02-02
  • 打赏
  • 举报
回复
自定义事件
ivinkoo 2009-02-02
  • 打赏
  • 举报
回复
谢谢!
ivinkoo 2009-02-02
  • 打赏
  • 举报
回复
大哥 你这个问题解决没啊!
小弟也遇到了这样的问题。
能否把相关代码 发到我邮箱 gwznet@qq.com
herowach 2008-12-31
  • 打赏
  • 举报
回复
理论上是改变改变绑定的数据源dataProvider,被修改的所有Renderer也会变化,但实际上是dataProvider被修改而页面没刷新,也就是只有一个Renderer执行了set data,另外一个并没有执行,我以前做过的是TileList里要改一个另一个Renderer也要变的情况,刷新问题测试了好久,当时是通过
tl.dataProvider = null;
tl.validateNow();
tl.dataProvider = data;
这样实现的,因为发现改变dataProvider并没有刷新,只有指向null后重新再赋才会全部刷新,你可以选试试,如果遇到可以尝试下。
lzp4881 2008-12-31
  • 打赏
  • 举报
回复
我的源代码是这样的,datagrid是一个可编辑的空表格,绑定了一个空的ArrayCollection,当点击添加的时候往ArrayCollection里面添加一个空行,然后再往表格里填写内容,其中有两项要用ComboBox进行选择,所以用了两个itemRenderer。
mail.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical">

<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;

[Bindable] private var applyData : ArrayCollection = new ArrayCollection();

private function addHandler():void {
var obj:Object = new Object();
obj.applyName='';
obj.applyModel='';
obj.amount=0;
obj.unitPrice=0;
obj.money=0;
applyData.addItem(obj);
}
]]>
</mx:Script>

<mx:Button label="添加一行" click="addHandler()" />
<mx:DataGrid id="applyGrid" dataProvider="{applyData}" height="150" width="720" editable="true" >
<mx:columns>
<mx:DataGridColumn headerText="品牌" dataField="applyName" itemRenderer="applyNameRender" editable="false" />
<mx:DataGridColumn headerText="型号" dataField="applyModel" itemRenderer="applyModelRender" editable="false" />
<mx:DataGridColumn headerText="数量" dataField="amount" editable="true" width="50" />
<mx:DataGridColumn headerText="单价" dataField="unitPrice" editable="false" width="80" />
<mx:DataGridColumn headerText="金额" dataField="money" editable="false" width="80"/>
</mx:columns>
</mx:DataGrid>

</mx:Application>



applyNameRender.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml" width="100%" creationComplete="getStuff.send()" >

<mx:Script>
<![CDATA[
import mx.rpc.events.ResultEvent;

private function resultHandler():void {
this.data.applyName = stuff.selectedItem.col1;
}

private function changeHandler():void {
this.data.applyName = stuff.selectedItem.col1;
var obj:Object = new Object();
obj.stuff = stuff.selectedItem.col1;
parentDocument.getStuffModel.send(obj);
}

]]>
</mx:Script>

<mx:HTTPService id="getStuff" useProxy="false" url="service/getStuff.asp" result="resultNameHandler()"/>

<mx:ComboBox id="stuff" dataProvider="{getStuff.lastResult.item.datalist}" selectedIndex="0" labelField="col1"
change="changeHandler()" rowCount="15" width="100%"/>

</mx:HBox>



applyModelRender.mxml
<?xml version="1.0" encoding="utf-8"?>
<mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml" width="100%">

<mx:Script>
<![CDATA[
private function changeHandler():void {
this.data.model = stuffModel.selectedItem.col1;
this.data.unitPrice = stuffModel.selectedItem.col2;
parentDocument.data.itemUpdated();
}

]]>
</mx:Script>

<mx:HTTPService id="getStuffModel" useProxy="false" method="POST" url="service/getStuffModel.asp" >
<mx:request>
<Stuff>{stuff.selectedItem.col1}</Stuff>
</mx:request>
</mx:HTTPService>

<mx:ComboBox id="stuffModel" dataProvider="{getStuffModel.lastResult.item.datalist}" selectedIndex="0" labelField="col1"
rowCount="15" change="changeHandler()" width="100%"/>

</mx:HBox>

现在关键是当选择了applyNameRender后怎么把值传给applyModelRender里面的<Stuff>{stuff.selectedItem.col1}</Stuff>并且激活getStuffModel.send(),让它重新到后台程序取数据
不会飞的鱼 2008-12-30
  • 打赏
  • 举报
回复
楼上说的对,
数据绑定
自定义事件
xxcn2007 2008-12-30
  • 打赏
  • 举报
回复
数据绑定
自定义事件

4,328

社区成员

发帖
与我相关
我的任务
社区描述
多媒体/设计 Flex
社区管理员
  • Flex
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧