我有3个复选框用于计算金额用途。我在datagrid中使用了Datagrid
<mx:DataGrid>
<mx:itemRenderer>
<mx:Component>
<mx:CheckBox id=mycheckbox change="calc()"/>
</mx:Component>
</mx:itemRenderer>
...
public function calc():void
{
statistic.dataProvider = mycheckbox.selectedItem;
}
但它会像调用可能未定义的方法(calc)那样抛出错误
答案 0 :(得分:3)
您不能按照您已完成的方式为复选框指定ID,并希望它表现为单个组件。 当您将复选框指定为列的项呈示器时,您不是在谈论单个复选框。 您将处理与数据网格中的行一样多的复选框。 以下示例显示如何确定是否选中特定行中的复选框
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="vertical"
creationComplete="init()">
<mx:Script>
<![CDATA[
import mx.collections.ArrayCollection;
import mx.controls.Alert;
private var ac:ArrayCollection=new ArrayCollection([
{name: "John", test: true},
{name: "Joe", test: false}]);
private function init() {
dg.dataProvider=ac;
}
public function check():void {
var obj:Object=dg.selectedItem;
Alert.show("Checkbox=" + obj.test);
}
]]>
</mx:Script>
<mx:DataGrid id="dg"
dataProvider="{ac}"
click="check()">
<mx:columns>
<mx:DataGridColumn dataField="name">
</mx:DataGridColumn>
<mx:DataGridColumn>
<mx:itemRenderer>
<mx:Component>
<mx:CheckBox label="Test"
selected="{data.test}"/>
</mx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>
</mx:columns>
</mx:DataGrid>
</mx:Application>
当您拥有嵌套的itemrenderer时,有时flex似乎无法更新数据网格的数据提供程序。您可以在复选框上发生更改事件时显式设置dataprovider行的相应属性,如下所示;
<mx:itemRenderer>
<mx:Component>
<mx:CheckBox label="Test" selected="{data.test}"
change="data.test=selected"/>
</mx:Component>
</mx:itemRenderer>
答案 1 :(得分:0)
复选框没有“selectedItem”函数或属性...
mycheckbox.selected将根据是否选中sed复选框返回true或false
通过将dataprovider设置为true或false,我不确定您要完成的任务,在我看来,您希望使用RadioButtonGroup
答案 2 :(得分:0)
在itemrenderer中使用outerDocument.functionname
,并将该函数设置为public。这是Flex,Hierarchy管理不善的限制。