您的位置:首页 > 其它

dijit/form/FilteringSelect 的使用记录

2017-07-17 14:07 549 查看
项目中需要用到二级联动的下拉框,第一级下拉框是同步加载的,第二级是根据第一级的选择项js动态生成。花了不少的时间调试,把它记录下来,给自己和开发中要用到的大家一点参考。先上效果图:



上代码:

dept.jsp

<s:select data-dojo-type="dijit/form/FilteringSelect" name="firstDeptCode"
onchange="dept.select(this.value, null)" list="#request.firstDeptViews"
listKey="deptId" listValue="name"></s:select>

<input data-dojo-type="dijit/form/FilteringSelect" id="form_deptCode" name="deptCode"/>


dept.js

/**
* url:将上一级部门的ID作为参数,获取到二级部门list:secondDeptViews
*/

dept.select = function (deptId, deptCode) {
var secondDeptSelect = dijit.registry.byId("form_deptCode");
request.post(url,{
handleAs : "json",
data : {
deptId: deptId
},
preventCache : true
}).then(function(data) {
var secondDeptViewsData = data.secondDeptViews;
secondDeptSelect.store = new dojo.store.Memory({
idProperty: "code",
data : secondDeptViewsData
});
// 新建或修改或查询时,设置二级部门值
if (parent != "" && parent > 0){
// 如果是新建或查询,设置列表第一个值
if (deptCode == null){
secondDeptSelect.set("value", secondDeptViewsData[0].code);
}
// 如果是修改,将原code设值
else {
secondDeptSelect.set("value", deptCode);
}
}
}, function(error) {
util.msgDlg(error);
});
};


说明:dijit/form/FilteringSelect中的list可以是list也可以是map:

map是需要自己将key和value自己拼装,麻烦点,但是看起来会明白点,最后没用map的原因是在后面修改时,name中值无法回写,可能是自己哪里没配好,导致找了很长时间也没找出原因。s:select 中的listKey listValue分别就是map中的key和value;

list的列表中的是dept的javabean,包含”deptId” 、”name”等字段信息,配置如dept.jsp所示。

才疏学浅,写得不对的地方欢迎点评,私信。

也可关注我的微信公众号『TyronToCoder』,一起交流学习。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  dojo select