web 二级联动的实现

  • Post author:
  • Post category:其他


二级联动有时我们在项目当中会遇到,所以就来记录以及分享一下。

先上个效果图吧:

这里写图片描述

思路:1、首先你需要获取你主表的全部数据(也就是你需要展示的数据),就比如,你先要得到全部的省份,再根据相应的省份得到相应的市是吧。(这个可以根据像查询单个条件那样查询)

2、这时候你的省已经出来了,就可以根据省得到市了,可以根据省的id查询出市,把你的省的id传过去,根据你的这个id查询其对应市的表,这时你便可以查询并显示你想要的字段了

实现 jsp:

<td style="width: 40%;">
                                            <label class="col-sm-3 control-label">上游渠道</label>
                                            <div class="col-sm-4">
                                                <select class="form-control pull-left" id="cup_channel_id" 
        //点击第一个框时调用第二个下拉框的方法                        onchange="getByCupChannelProduct(this.value,'cup_channel_product_id')" name="cup_channel_id"  >
                                                </select>
                                            </div>
                                            <label class="col-sm-1 control-label"></label>
                                            <div class="col-sm-4" id="cup_channel_product_id_div" style="display: none;">
                                                <select class="form-control pull-left" id="cup_channel_product_id" name="cup_channel_product_id"  >
                                                </select>
                                            </div>
                                        </td>

js

function getByCupChannelProduct(cup_channel_id,id){
    var obj = $("#"+id);
    if(cup_channel_id == ''){
        obj.empty();
    }else{
        var obj = $("#"+id);
        $.post("cupchannelmerinfo/getByCupChannelProduct.do", {"cup_channel_id":cup_channel_id}, function (data) {
            if (!data.result) {
                alertErrorAtBottomRight(data.errorMsg);
                obj.empty();
    /**样式 二级的点击有就显示  无就不显示
    /           $("#cup_channel_product_id_div").css("display","none");
            } else {
                $("#cup_channel_product_id_div").css("display","block");
                var value = data.data;
                var len = value.length;
                obj.empty();
                obj.append("<option value=''>请选择</option>");
                for(var i=0;i<len;i++){
                    obj.append("<option value='"+value[i].id+"'>"+value[i].product_name+"</option>");
                }
            }
        }, 'json');
    }
}

controller

@RequestMapping(value = "getByCupChannelProduct.do", method = RequestMethod.POST)
    public @ResponseBody AjaxProcessResult getByCupChannelProduct(HttpServletRequest request,HttpServletResponse response){
        String cup_channel_id = request.getParameter("cup_channel_id");

        if(StringHandler.isEmpty(cup_channel_id)){
            return AjaxProcessResult.getErrorResult("上游渠道编号不能为空");
        }
        try {
            List<CupChannelProduct> list = cupChannelProductService.getByCupChannelId(Long.valueOf(cup_channel_id));
            if(list != null && list.size() > 0)
                return AjaxProcessResult.getSuccessResult(list);
            else
                return AjaxProcessResult.getErrorResult("获取产品信息为空");
        } catch (Exception e) {
            if(LOG.isErrorEnabled())
                LOG.error(e.getMessage());
            return AjaxProcessResult.getErrorResult(e.getMessage());
        }
    }

其他就是不贴了,关键代码都已贴完,其实最重要的是思路,你思路清晰了,自然而然的就能写出来了。一起加油!!!



版权声明:本文为l_blackeagle原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。