Dojo动态填充组合框小部件 [英] Dojo populate combo box widget dynamically

查看:114
本文介绍了Dojo动态填充组合框小部件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

有人可以向我解释为什么这个简单的直接代码不工作,

  var serviceStore = new dojo.data。 ItemFileWriteStore({
data:{identifier:serviceCode,items:[]}
});
// jsonObj是一个json对象,我从服务器通过AJAX
获取(var i = 0; i< jsonObj.length; i ++){
serviceStore.newItem({serviceCode: jsonObj [I]});
}
var serviceFilterSelect = dojo.byId('serviceSelect');
serviceFilterSelect.store = serviceStore;

全部没有显示错误,但我的ID为serviceSelect的组合框不显示任何选项,组合在我的代码的html部分声明,

 < input dojoType =dijit.form.ComboBox ID = serviceSelect >< /输入> 

任何指向正确方向的指针都将不胜感激。

解决方案

首先,您应该使用 dijit.byId 获取dojo小部件而不是 dojo.byId
jsonObj中的每个项目都应包含字段name。此字段将显示在组合框中。例如:

  dojo.require(dojo.data.ItemFileWriteStore); 
dojo.require(dijit.form.ComboBox);
var storeData = {
identifier:'serviceCode',
items:[]
}

var jsonObj = [{
serviceCode: 'sc1',
name:'serviceCode1'
},
{
serviceCode:'sc2',
name:'serviceCode2'
}]
dojo.addOnLoad(function(){

var serviceStore = new dojo.data.ItemFileWriteStore({data:storeData});

for(var i = 0 ; i< jsonObj.length; i ++){
serviceStore.newItem(jsonObj [i]);
}
var serviceFilterSelect = dijit.byId('serviceSelect');
serviceFilterSelect.attr('store',serviceStore);
});

和HTML:

 < select dojotype =dijit.form.ComboBoxid =serviceSelect>< / select> 

似乎它的作品


Could someone please explain to me why this simple straight forward code isnt working,

var serviceStore = new dojo.data.ItemFileWriteStore({
data: {identifier: "serviceCode",items:[]}
}); 
//jsonObj is a json object that I obtain from the server via AJAX                                       
for(var i = 0; i<jsonObj.length;i++){
serviceStore.newItem({serviceCode: jsonObj[i]});
  }
var serviceFilterSelect = dojo.byId('serviceSelect');
serviceFilterSelect.store = serviceStore;

There is no error at all displayed but my combobox with the id "serviceSelect" doesn't display any options, the combo is declared in the html section of my code,

<input dojoType = "dijit.form.ComboBox" id="serviceSelect"></input>

Any pointers towards the right direction will be much appreciated.

解决方案

First of all you should use dijit.byId to get dojo widget instead of dojo.byId. Also every item in jsonObj should contains field "name". This field will be displayed in combobox. E.g:

dojo.require("dojo.data.ItemFileWriteStore");
dojo.require("dijit.form.ComboBox");
var storeData = {
    identifier: 'serviceCode',
    items: []
}

var jsonObj = [{
    serviceCode: 'sc1',
    name: 'serviceCode1'
},
{
    serviceCode: 'sc2',
    name: 'serviceCode2'
}]
dojo.addOnLoad(function () {

var serviceStore = new dojo.data.ItemFileWriteStore({ data: storeData });

for (var i = 0; i < jsonObj.length; i++) {
    serviceStore.newItem(jsonObj[i]);
}
var serviceFilterSelect = dijit.byId('serviceSelect');
serviceFilterSelect.attr('store', serviceStore);
});

And HTML:

<select dojotype="dijit.form.ComboBox" id="serviceSelect" ></select>

It seems that it works.

这篇关于Dojo动态填充组合框小部件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆