dwz+jfinal 市县下拉菜单二级联动(实例)
在DWZ文档中对组合框combox的是这样描述的:
在传统的select 用class 定义:class=”combox”, html 扩展:保留原有属性name, 增加了属性:ref。
ref 属性则是为了做级联定义的,ref所指向的则是当前combox值改变成引起联动的下一级combox,ref用下一级combox的id属性来赋值。注 意:一般combox没必要设置id属性,只要级联时需要设置子级id等于父级ref,不同navTab和dialog中combox组件id必须唯一
以下是DWZ框架里面的示例代码:
<div class="pageContent" layoutH="56">
<select class="combox" name="province" ref="w_combox_city" refUrl="demo/combox/city_{value}.html">
<option value="all">所有省市</option>
<option value="bj">北京</option>
<option value="sh">上海</option>
<option value="zj">浙江省</option>
</select>
<select class="combox" name="city" id="w_combox_city" ref="w_combox_region" refUrl="demo/combox/region_{value}.html">
<option value="all">所有城市</option>
</select>
<select class="combox" name="region" id="w_combox_region">
<option value="all">所有区县</option>
</select>
<div class="divider"></div>
<select class="combox" name="test">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
</select>
</div>
[ ["all", "所有城市"], ["bj", "北京市"] ]
根据以上可以看出,combox的工作模式是这样的,当一级菜单的某个选项选中时,就会执行相应的refUrl=“X.action",通过服务 器返回json格式的页面后,并根据一级菜单中定义的ref="XXX"来寻找二级菜单中id=“XXX”,将返回的json页面放入二级菜单中,与此同 时,如果还有三级菜单的话,由于二级菜单的数据的改变,二级菜单中也会执行其相应的refUrl,随后服务器同样返回json格式页面,寻找与ref匹配 的id三级菜单进行联动..以此类推。
jfinal例子:
页面:
<dl >
<dt>项目所在城市:</dt>
<dd>
<select name="model.city" class="combox required" ref="s_county" refUrl="${root!}/admin/itemInfo/getCounty/{value}">
<option value="">===全省===</option>
<#list city as n>
<option value="${n.id}">${n.mc}</option>
</#list>
</select>
</dd>
</dl>
<dl >
<dt>项目所在县:</dt>
<dd>
<select class="combox" name="model.county" id="s_county">
</select>
</dd>
</dl>
后台:
/***
* 根据市名获取县名
*
*/
public void getCounty(){
//17地市加载
List list3 = DmCounty.dao.find("select id,mc from dm_county where c_dm = '"+getPara()+"'");
StringBuilder jsonStr = new StringBuilder();
jsonStr.append("[[\"\",\"==全部==\"]");
for (int i =0;i<list3.size();i++){
DmCounty dmCounty = (DmCounty) list3.get(i);
jsonStr.append(",[");
jsonStr.append("\"" + dmCounty.get("id") + "\",");
jsonStr.append("\"" + dmCounty.get("mc") + "\"");
jsonStr.append("]");
}
jsonStr.append("]");
renderHtml(jsonStr.toString());
}
本文原创,转载必追究版权。