dojox / checkedMultiSelect在顶部添加选项AS'选择所有'

时间:2014-11-25 08:04:00

标签: dojo

我正在尝试使用名为的顶级选项填充dojox / form / checkedMultiSelect:'全部选择'。
一种方法是使用declare函数来改变' _addOptionItem'功能。
问题是这个' _addOptionItem' function正在使用一个名为:' formCheckedMultiSelectMenu Item '在CheckedMultiSelect'内部小部件,AND给出错误:' formCheckedMultiSelectMenuItem未定义'。
如何解决这个问题? 我的JS代码:

declare_CheckedMultiSelect: function(formCheckedMultiSelectItem){
        return declare(CheckedMultiSelect, {

            startup: function() {
                this.inherited(arguments);
                setTimeout(lang.hitch(this, function() {
                    this.dropDownButton.set("label", this.label);
                }));
            },

            _addOptionItem: function(item){
                var item;
                if(this.dropDown){
                    item = new formCheckedMultiSelectMenuItem({
                        option: option,
                        parent: this.dropDownMenu
                    });
                    c(item)
                    this.dropDownMenu.addChild(item);
                }else{
                    item = new formCheckedMultiSelectItem({
                        option: option,
                        parent: this
                    });
                    this.wrapperDiv.appendChild(item.domNode);
                }
                this.onAfterAddOptionItem(item, option);
            }

        });
    }

1 个答案:

答案 0 :(得分:2)

以下是您要尝试实现的工作原型http://jsfiddle.net/894af/750/,请随时提出任何跟进问题。它以不同的方式完成,但我只是做了:

1)创建mutliselect后,使用

创建每个复选框

onAfterAddOptionItem

2)听取全选复选框,然后覆盖onclick功能,然后根据复选框的选择更改所有复选框的选择。

if(option.value == "SA"){
            on(item, "click", function(evt){
          var optionsToSelect = checkedMultiSelect.getOptions();

            for(var i = 0 ; i < optionsToSelect.length;i++){

                if(optionsToSelect[i].value == "SA"){

                    if(optionsToSelect[i].selected){  
                        checkedMultiSelect.set("value",optionsToSelect);

                    }else{

                         checkedMultiSelect.set("value",[]);
                    }
                }
            }
        });

            }