【问题标题】:Disabling radiobuttongroup禁用单选按钮组
【发布时间】:2011-01-04 19:59:43
【问题描述】:

由于 Repeater 组件不会在 mxml 中生成单选按钮组,并且我无法通过 ActionScript 执行相同操作,因为当我尝试以这种方式创建单选按钮组时,单选按钮组没有 id 属性,有没有办法禁用单选按钮有吗?据我所知,我唯一可以设置和访问的是单选按钮的 groupName 属性。

对于Repeater组件,我尝试直接使用xml

<mx:XML id="xquiz" source="quiz.xml" />

使用此代码:

<mx:Repeater dataProvider="{xquiz.question}" id="rep">
        <mx:Label text="{rep.currentItem.content}" />
        <mx:Repeater dataProvider="{rep.currentItem.answer}" id="rep2">
            <mx:RadioButton label="{rep2.currentItem}" groupName="{'rbg'+rep.currentIndex}" click="checkAnswers(event)" value="{rep2.currentItem.@correct}" />
        </mx:Repeater>
    </mx:Repeater>

并且不能使用中继器生成单选按钮组,因为它不是可见组件。

我也尝试了 ActionScript 方法,但使用 HTTPService mxml 组件来获取 xml 文件。

<mx:HTTPService id="srv" url="quiz.xml" resultFormat="e4x" result="handleResult(event);" fault="handleFault(event);"/>

这里是动作脚本 sn-p:

private var xQuizData:XML

private function handleResult(event:ResultEvent):void {
                xQuizData = event.result as XML;
                initApp();
            }

private function initApp():void {
                var cnt:Number = 0;
                for each (var question:XML in xQuizData.*) {
                    var lbl:Label = new Label();
                    lbl.text = question.content;
                    panel.addChild(lbl);
                    lbl.visible = true;
                    var cnt2:Number = 0;
                    for each (var answer:XML in question.answer) {
                        var rb:RadioButton = new RadioButton();
                        rb.id=String(cnt);
                        rb.label=answer;
                        rb.groupName="rbg"+String(cnt);
                        if (answer.hasOwnProperty("correct")) {
                            rb.value=true;
                        }
                        panel.addChild(rb);
                        rb.visible = true;
                        cnt2++;
                    }
                    cnt++;
                }
            }

我希望能够捕获来自单选按钮组控件的点击,但如果使用中继器则根本无法生成它们,或者如果使用动作脚本则无法为其分配 ID。

XML 内容看起来像这样:

<quiz>
<question>
<content>Some question?</content>
<answer>Answer one</answer>
<answer correct="true">Answer two</answer>
<answer>Answer three</answer>
<answer>Answer four</answer>
</question>
</quiz>

【问题讨论】:

    标签: apache-flex flex3


    【解决方案1】:

    我很难从你的 sn-ps 中跟踪你试图做的事情,所以这是我的一个 sn-p,它应该完全符合你的要求。希望您可以查看它并根据您的问题对其进行调整。

    public function buildVBox():void{
        tempVBox.removeAllChildren();
        var iterator:Number = 0;
    
        for each (var i:XML in myXML.children()){
    
            var tempCanv:Canvas = new Canvas();
            tempCanv.id = iterator.toString();
            var tempRadYes:RadioButton = new RadioButton;
            tempRadYes.x = 30; 
            tempRadYes.y = 20;
            tempRadYes.origY = 20;
            tempRadYes.groupName = "rbg" + iterator.toString();
            tempRadYes.value = 1; 
            tempRadYes.label = "Yes"
            tempCanv.addChild(tempRadYes);
            var tempRadNo:extRadioButton = new extRadioButton;
            tempRadNo.x = 80; 
            tempRadNo.y = 20;
            tempRadNo.origY = 20;
            tempRadNo.groupName = "rbg" + iterator.toString();
            tempRadNo.value = 2; 
            tempRadNo.label = "No"
            tempCanv.addChild(tempRadNo);
            var tempRadNA:extRadioButton = new extRadioButton;
            tempRadNA.x = 120; 
            tempRadNA.y = 20;
            tempRadNA.origY = 20;
            tempRadNA.groupName = "rbg" + iterator.toString();
            tempRadNA.value = 0; tempRadNA.label = "N/A"
            tempCanv.addChild(tempRadNA);
            tempVBox.addChild(tempCanv);
            iterator++;
        }
    }
    

    【讨论】:

    • 你在做和我一样的事情。我对单选按钮进行分组没有问题,但是在访问特定组以便一次触发所有按钮上的事件时,请检查单击的答案是否正确并禁用整个组。区别在于单选按钮属性“groupName”和“group”。我需要使用“组”属性,但不能让它与动态创建的单选按钮组控件一起使用。 :(
    【解决方案2】:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-02-16
      • 2022-01-15
      • 1970-01-01
      • 2017-12-28
      • 2011-08-19
      • 2021-12-05
      相关资源
      最近更新 更多