复选框从xml问题中选择了字段

时间:2010-02-09 16:52:56

标签: flex

我正在尝试从dataprovider(xml文件)设置复选框的选定值。

<mx:DataGridColumn width="75" headerText="show/hide" dataField="@hidden">
                <mx:itemRenderer>
                    <mx:Component>
                        <mx:CheckBox  selected="{data.@hidden}" />
                    </mx:Component>
                </mx:itemRenderer>
            </mx:DataGridColumn>

我认为我遇到的问题是,它没有将html中的属性识别为boolean“hidden =”false“或hidden =”true“。我可以获取值,但是如何让它识别值不是字符串?

2 个答案:

答案 0 :(得分:0)

我认为你可以将它包装在{Boolean(data。@ hidden)}

类型中

如果包装它不起作用,你可以声明一个布尔值

var myBool:Boolean = new Boolean();

然后做出决定:

myBool = (data.@hidden=="true");

修改 我的代码不多,所以我无法对此进行测试,但我认为它应该可行。

使用此复选框创建一个MXML组件,对于我的示例,它将被称为ItemRendCheckBox:

<?xml version="1.0" encoding="utf-8"?>
<mx:CheckBox xmlns:mx="http://www.adobe.com/2006/mxml">
    <mx:Script>
        <![CDATA[
            override public function set data( value:Object ):void{
                super.data = value;
                this.selected = Boolean(data);
            }
        ]]>
    </mx:Script>
</mx:CheckBox>

然后在您的dataGrid XML中执行以下操作:

<mx:DataGridColumn width="75" headerText="show/hide" dataField="@hidden">
  <mx:itemRenderer>
    <mx:Component>
       <mx:ItemRendCheckBox/>
    </mx:Component>
  </mx:itemRenderer>
</mx:DataGridColumn>

答案 1 :(得分:0)

我遇到了类似的问题,为了解决这个问题,只需将此代码段放入大括号中即可:

('false' == data.@hidden) ? false : true

基本上你将从数据中获得的值。@ hidden不是布尔值,而是字符串,因此使用引号围绕false。