三级联动

从数据库获取数据,在页面显示,获取成三级联动。三级联动无疑就是两个二级联动,但是又有所不同,主要是体现在初始化上面。


一:三级联动的数据准备,例如实验室—》老师—–》项目三者之间的关系
1:serviceImpl数据处理层
实验室与老师数据:Map<实验室名称,Map<教师id,教师名称>>

public Map<String, Map<String, String>> getFieldMap() {
        Map<String, Map<String, String>> map=new HashMap<String, Map<String,String>>();
        List<CustomerBaseInfo> cList=this.customerBaseInfoDao.getAllCustomer();
        if(cList!=null){
            for(CustomerBaseInfo cInfo:cList){
                Map<String, String> filed=new HashMap<String, String>();
                List<WindFieldInfo> wList=this.windFieldInfoDao.getIdWindInfo(cInfo.getId());
                if(wList!=null){
                    for(WindFieldInfo wInfo:wList){
                        filed.put(wInfo.getId().toString(), wInfo.getFieldName());
                    }
                }
                map.put(cInfo.getCustomerName(), filed);
            }
        }
        return map;
    }

教师与项目数据:Map<教师id,List<项目名称>>

public Map<String, List<String>> getWindProject() {
        Map<String, List<String>> map=new HashMap<String, List<String>>();
        List<WindFieldInfo> wlist=windFieldInfoDao.getAllWindInfo();
        if(wlist!=null){
            for(WindFieldInfo w:wlist){
                List<String> list=new ArrayList<String>();
                if(w.getProjectName()!=null){
                    String[] str=w.getProjectName().split(";");
                    if(str!=null){
                        for(String s:str){
                            list.add(s);
                        }
                    }else{
                        list.add(w.getProjectName());
                    }
                }
                map.put(w.getId().toString(), list);
            }
        }
        return map;
    }

2:action数据交互层:注意把map数据转换成json数据类型,便于js使用,ValueContext.putValueContext(“jsonMap”, jsonMap)-自定义的方法,类似于request

public String input() {
        Map<String, Map<String, String>> fMap=serviceTrackingInfoService.getFieldMap();
        ValueContext.putValueContext("fMap", fMap);
        if(fMap!=null){
            JSONObject jsonMap=JSONObject.fromObject(fMap);
            ValueContext.putValueContext("jsonMap", jsonMap);
        }
        Map<String, List<String>> projectMap=serviceTrackingInfoService.getWindProject();
        if(projectMap!=null){
            JSONObject pMap=JSONObject.fromObject(projectMap);
            ValueContext.putValueContext("pMap", pMap);
        }
        List<String> uList=serviceTrackingInfoService.getUserList();
        ValueContext.putValueContext("uList",
                JSONArray.fromObject(uList));
        return "input";
    }

二:与页面交互,注意初始化
1:jquery代码处理

<script type="text/javascript">
$(function(){
    var map  = ${jsonMap};
    var value = $("select[parent]:eq(0)").val();
    var list = map[value];
    var child = $("select[child]:eq(0)");

    for(var key in list){
        child.append("<option value='"+key+"'>"+list[key]+"</option>");
    }
    $("select[parent]").change(function(){
        var value = $(this).val();
        var list = map[value];
        var child = $("select[child]:eq(0)");
        child.empty();
        for(var key in list){
            child.append("<option value='"+key+"'>"+list[key]+"</option>");
        }
        var projectMap  = ${pMap};
        var value1 = $("select[name='windFieldInfo.id']:eq(0)").val();
        var list1 = projectMap[value1];
        var child1 = $("select[name='projectName']:eq(0)");
        child1.empty();
        for(var key in list1){
            child1.append("<option value='"+list1[key]+"'>"+list1[key]+"</option>");
        }
    });
    var projectMap  = ${pMap};
    var value = $("select[name='windFieldInfo.id']:eq(0)").val();
    var list = projectMap[value];
    var child = $("select[name='projectName']");
    for(var key in list){
        child.append("<option value='"+list[key]+"'>"+list[key]+"</option>");
    }
    $("select[name='windFieldInfo.id']").change(function(){
        var value = $(this).val();
        var list = projectMap[value];
        var child = $("select[name='projectName']:eq(0)");
        child.empty();
        for(var key in list){
            child.append("<option value='"+list[key]+"'>"+list[key]+"</option>");
        }
    });
})
</script>

2:jsp页面

<tr>
    <td>实验室:</td>
    <td><select name="customerName" parent="true" >
        <s:iterator value="#fMap.keySet" >
<option value="<s:property/>"><s:property/></option>
        </s:iterator>
        </select></td>
</tr>   
<tr>
    <td>教师:</td>
    <td><select name="windFieldInfo.id" child="true" > </select></td>
<tr>
    <td>所属项目:</td>
    <td><select name="projectName" ></select></td>
</tr>

三:特别注意一点的是,如果在做修改页面的时候,三级联动select就需要显示特定的数据,select就需要初始化:

<script type="text/javascript">
$(function(){
    var map  = ${jsonMap};
    var customer="${customer}";
    $("select[parent]").find("option[value='"+customer+"']").attr("selected",true);
    var value = $("select[parent]").val();
    var list = map[value];
    var child = $("select[child]");    
    for(var key in list){
        child.append("<option value='"+key+"'>"+list[key]+"</option>");
        var fieldId="${fieldId}";
        $("select[child]").find("option[value='"+fieldId+"']").attr("selected",true);
    }
    $("select[parent]").change(function(){
        var value = $(this).val();
        var list = map[value];
        var child = $("select[child]:eq(0)");
        child.empty();
        for(var key in list){
            child.append("<option value='"+key+"'>"+list[key]+"</option>");
        }
        var projectMap  = ${pMap};
        var value1 = $("select[name='windFieldInfo.id']:eq(0)").val();
        var list1 = projectMap[value1];
        var child1 = $("select[name='projectName']:eq(0)");
        child1.empty();
        for(var key in list1){
            child1.append("<option value='"+list1[key]+"'>"+list1[key]+"</option>");
        }
    });
    var projectMap  = ${pMap};
    var value = $("select[name='windFieldInfo.id']").val();
    var list = projectMap[value];
    var child = $("select[name='projectName']");   
    for(var key in list){
        child.append("<option value='"+list[key]+"'>"+list[key]+"</option>");
        var projectName="${projectName}";
        $("select[name='projectName']").find("option[value='"+projectName+"']").attr("selected",true);
    }
    $("select[name='windFieldInfo.id']").change(function(){
        var value = $(this).val();
        var list = projectMap[value];
        var child = $("select[name='projectName']:eq(0)");
        child.empty();
        for(var key in list){
            child.append("<option value='"+list[key]+"'>"+list[key]+"</option>");
        }
    });

})
</script>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值