如何在数据网格的iteamreander中找到复选框值(选中/取消选中)?

时间:2009-07-04 12:47:29

标签: flex air flash

我有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)那样抛出错误

3 个答案:

答案 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管理不善的限制。

相关问题