项目框架 struts2+spring3+ibatis
用了js+json+jq去实现这个效果
需要jquery-min.js
<script>
function selectOnchangeb(){
var obj=document.getElementById('myselecta');
var index=obj.selectedIndex; //序号,取当前选中选项的序号
var val = obj.options[index].value;
var sel = $("#optionb"); //二级下拉框Id
var parentID=val;
//alert(parentID);
$.getJSON("${context}/courseTtype/index/getCourseTypeSonTypes.action?parentID="+parentID,function call(data){
writeHtml(data);
});
}
function writeHtml(data){
var sel = $("#optionb"); //二级下拉框Id
sel.empty();
var objb=document.getElementById('optionb');
objb.options.length=0;
objb.add(new Option("",""));
// alert(data);
$.each(data,function(i, item){//填充到二级下拉框
//alert(item.name);
// $("<option value='"+item.mainid+"'>"+item.name+"</option>").appendTo(sel); //这个jq实现不了那个填充效果不知道为什么 无奈之下只能下面的js填充法去实现
var obj=document.getElementById('optionb');
// 添加一个选项
obj.add(new Option(item.name,item.mainid));
});
selectOnchangec();
}
function selectOnchangec(){
//alert('b');
//var obj=document.getElementById('optionb');
//var index=obj.selectedIndex; //序号,取当前选中选项的序号
var selects=document.getElementsByName('optionb');
var val;
if(selects&&selects[0])
{
val=selects[0].value;
}
//val = obj.options[index].value;
var sel = $("#optionc"); //三 级下拉框Id
var parentID=val;
// alert(parentID);
$.getJSON("${context}/courseTtype/index/getCourseTypeSonTypes.action?parentID="+parentID,function call(data){
writeHtmlb(data);
});
}
function writeHtmlb(data){
var sel = $("#optionc"); //三级下拉框Id
sel.empty();
var objb=document.getElementById('optionc');
objb.options.length=0;
objb.add(new Option("",""));
// alert(data);
$.each(data,function(i, item){//填充到二级下拉框
//alert(item.name);
// $("<option value='"+item.mainid+"'>"+item.name+"</option>").appendTo(sel);
var obj=document.getElementById('optionc');
// 添加一个选项
obj.add(new Option(item.name,item.mainid));
});
}
</script>
<select onchange="selectOnchangeb()" id="myselecta">
<option value=""></option>
<s:iterator id="useriterator" value="#request['CourseTypeBigTypes']" >
<option value="<s:property value="mainid" />"><s:property value="name" /></option>
</s:iterator>
</select>
<select id="optionb" onchange="selectOnchangec()"><option value=""></option></select>
<select id="optionc" ><option value=""></option></select>
后台:
ibatis
<select id="getCourseTypeBigTypes" resultMap="courseTypeResultMap"
parameterClass="java.lang.String">
select * from Base_CourseType where Type_ParentID=0
</select>
<select id="getCourseTypeSonTypes" resultMap="courseTypeResultMap"
parameterClass="java.lang.String">
select * from Base_CourseType where Type_ParentID=#parentID#
</select>
action:
// 高级搜索 联动下拉框 第一个下拉框数据读取
public String AdvancedSearch() {
List CourseTypeBigTypes = courseTypeService.getCourseTypeBigTypes();
HttpServletRequest request = ServletActionContext.getRequest();
request.setAttribute("CourseTypeBigTypes", CourseTypeBigTypes);
return SUCCESS;
}
// 二级联动下拉框数据
public void getCourseTypeSonTypes() throws IOException {
List CourseTypeSonTypes = courseTypeService.getCourseTypeSonTypes(this
.getParameter("parentID"));
List list = new ArrayList();
list = CourseTypeSonTypes;
List listb = new ArrayList();
StringBuffer selectoptions = new StringBuffer();
for (Iterator i = list.iterator(); i.hasNext();) {
CourseType map = (CourseType) i.next();
String mid = map.getMainid();
String name = map.getName();
selectoptions.append("<option value='" + mid + "'>" + name + "</option>") ;
listb.add(map);
}
JSONArray jsonArray = JSONArray.fromObject(listb);
HttpServletResponse hsr = ServletActionContext.getResponse();
//hsr.getWriter().write(selectoptions.toString());
PrintWriter writer;
try {
writer = hsr.getWriter();
writer.print(jsonArray);
writer.flush();
writer.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// return SUCCESS;
}
页面要调用 onload
<body onload="selectOnchangeb();">
daoimpl
:
@Override
public List getCourseTypeBigTypes() {
List list = new ArrayList();
list = this.getSqlMapClientTemplate().queryForList(
"getCourseTypeBigTypes");
return list;
}
@Override
public List getCourseTypeSonTypes(String parentID) {
// TODO Auto-generated method stub
List list = new ArrayList();
list = this.getSqlMapClientTemplate().queryForList(
"getCourseTypeSonTypes",parentID);
return list;
}
这个功能花了我一天多时间
sql:
create table hulianType (
MainID varchar(36) not null,
Type_Name varchar(50) not null,
Type_ParentID varchar(36) not null,
Type_CreateDate datetime not null,
Type_IsSystemDefine int null,
Type_Describe text null,
constraint PK_hulianType primary key (MainID)
)
转载请注明作者 谢谢 如有不清楚的同学可以 QQ交流 6637152