如何以编程方式设置dojox.form.CheckedMultiSelect的值?

mal*_*lan 2 javascript dojo

我有一个以编程方式创建的CheckedMultiSelect.

new dojox.form.CheckedMultiSelect({
        id: 'products',
        name: 'products',
        multiple: true,
        readOnly: false,
        store: store,
    },'products').startup();
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.MultiSelect已创建.现在,我使用multiselect打开网页,选中一些复选框并使用Chrome控制台:

var productSelect = dijit.byId("products");
productSelect.get('value');
[4, 3] 
Run Code Online (Sandbox Code Playgroud)

[4,3]是一个检查值的数组.

我的下一步是取消选中之前选中的复选框并再次使用Chrome控制台:

productSelect.set('value', [4, 3]);
Run Code Online (Sandbox Code Playgroud)

这就是问题发生的地方.函数'set'无效.盒子没有被选中.

我甚至试过了

productSelect.set('value', ['4', '3']);
Run Code Online (Sandbox Code Playgroud)

有任何想法吗?

mal*_*lan 5

好的,我在这里找到了答案.

但是,dijit.form.Select具有一个重要的限制:它的实现方式使得它不能很好地处理非字符串项标识.特别是,通过select.set("value",id)以编程方式设置窗口小部件的当前值将不适用于非字符串(例如数字)标识.

解决方案是将存储中的ID转换为字符串并使用

productSelect.set('value', ['4', '3']);     
Run Code Online (Sandbox Code Playgroud)