若依框架实现多级联动下拉

最近也是用到了若依的多级联动,效果如下(可多级)
在这里插入图片描述

若依有已经封装好的一套js,难点在于后端数据封装,前端按照封装好的代码引用即可。

这里主要分享下关于后端数据如何封装多层。后端代码直接奉上。

记得要把集合转json处理:JSON.toJSON(cxList)

cxList :返回前端的数据
  List<CxSelect> cxList = new ArrayList<CxSelect>();
	//deptList:第一级数据集合:进行循环,把第一级的对象封装到最外层的集合
        for (SysDept dept:deptList){
            CxSelect firstSelect = new CxSelect();
            firstSelect.setN(dept.getDeptName());
            firstSelect.setV(dept.getDeptId().toString());


            //第二级数据集合
            List<BaseSourceChannel> pidList = baseSourceChannelService.selectBaseSourceChannelList(faParam);

            List<CxSelect> secondList = new ArrayList<CxSelect>();

            for (BaseSourceChannel as:pidList){
                CxSelect secondSelect = new CxSelect();
                secondSelect.setN(as.getSourceName());
                secondSelect.setV(as.getId().toString());

                sonParam.setStatus("1");
                sonParam.setPid(as.getId());
                List<BaseSourceChannel> sonList = baseSourceChannelService.selectBaseSourceChannelList(sonParam);
            //第三级数据集合
                List<CxSelect> thirdList = new ArrayList<CxSelect>();
                for (BaseSourceChannel model:sonList){
                    CxSelect thirdSelect = new CxSelect();
                    thirdSelect.setN(model.getSourceName());
                    thirdSelect.setV(model.getId().toString());
                    thirdList.add(thirdSelect);
                }
                //在每一次第二级的对象内的第三级集合循环后,把第三级的集合赋值给第二级对象的S属性里,
                //并把该对象塞到第二级集合里
                secondSelect.setS(thirdList);
                secondList.add(secondSelect);
            }
               //在每一次第一级的对象内的第二级集合循环后,把第二级的集合赋值给第一级对象的S属性里,
              //并把该对象塞到第一级集合里
            firstSelect.setS(secondList);
            cxList.add(firstSelect);
        }

前端引入相关js --cxselect

<th:block th:include=“include :: jquery-cxselect-js” />

前端html部分:

  <div id="element">
          <li>
             <label>来源渠道:</label>
              <select class="first" name="sourceOne" placeholder="一级来源渠道"></select>
          </li>
        <li>
              <select class="second" name="source" placeholder="二级来源渠道"> </select>
         </li>

      </div>

前端js部分:
selects:数组长度代表下拉框的联动个数:每个元素和div的class属性对应,第一个元素表示第一级
data:表示后端封装的数据。
v:表示value,和返回对象的V属性对应
n:表示key,和返回对象的N属性对应

切记:前端下拉框个数要和后端封装层数保持一致。

在这里插入图片描述

理解后端数据封装逻辑之后,剩下的基本没有太大难度,这里就不多说了。

另外追加一些补充,关于如何给各个级别设置选中值 ,其实说简单也很简单,MD。也是翻阅了一翻资料才弄明白!

data-value属性:
通过data-value赋值,和下拉框的其中一个value保持一致,就能起到选中的效果。
在这里插入图片描述

今天的分享到此结束!

欢迎留言交流!互相成长!

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论
国微CMS为国内最主流的CMS系统之一,也是中国南方PHP领域最大的开源平台提供商。现拥有平台注册用户超过23万,下载次数达到70余万次,主要面向政府、军队、学校、集团级客户。耕耘八年,国微CMS采用二代框架,在系统高性能、速度、模块化、体系化、可视化等方面极具核心竞争优势, 可确保客户运营成功。 国微县、市、区政府门户方案功能介绍 A:政务公开:每个部门均有自己的信息公开,即可按部门筛选,又可按主题栏目筛选;提供重点信息公开、依申请公开等模块。 B:办事指南:办事指南的提供办事流程图、表格下载、办事入口等会快捷字段;同时办事指南即可按类别分类,又可按办事部门分类,非常方便。 C:网络问政:网络问政里面包括了领导信箱模块、在线访谈、问答等模块,每个部门均可管理自己的信件,每个信件可以流转,处理后可以短信通知对方。 D:旅游频道:可以将本县漂亮的风景、酒店、旅游路线用图像形式得到很好的体现。 E、新闻模块:CMS系统中最重要的模块之一,包括一键排版、顶客、关键字、评论、标签等相关功能。 F、图片模块:主流的大气图片展现模式,与凤凰网、网易类似。 G、视频模块:可调用第三方视频和自身上传视频,搭建视频门户。 H、下载模块:字段可自由添加和删除,支持中文名称的文件下载。 I、在线访谈:提供视频、图片、嘉宾、用户提问、留言等相关功能。 J、信息公开模块:提供部门年报、信息公开、多种类型字段分类和搜索。 K、手机短信模块:集成了国内主流的短信提供商接口,可以发送短信给用户。 L、邮件群发模块:利用如163邮箱,群发邮件给相关会员用户。 M、在线办事系统:提供多级审批模式,支持多种办事模型,支持手机回复。 N、留言本模块:留言栏目可分多类,管理员可以在线回复留言并进行管理。 O、表单系统:无限制自定义字段,无限极表单联动功能,自由导入导出excel数据。 P、投票模块:提供多种主流的投票模式,支持投票结果权限查看。 Q、通知通信模块:通知模块可以选择特定用户群体,发送通知并统计回复。 R、广告模块:支持浮广告、对联广告、下拉幻灯片广告、弹出广告。 S、会员模块:支持所有用户在会员中心发布、管理相关内容。 T、通讯录模块: 提供通讯录excel导出功能,支持拼音查询。 W、政府招标模块:将政府每期的招标需求和公示用EXCEL导入系统中,供所有企业查询。 X、工程备案查询:每个工程备案信息及时录入系统,可快速查询工程方的项目资质。 Y、招标审查模块:政府单位将招标项目的入围企业,审核并公示,接受用户反馈监督。 Z、系统整合模块:可以整合DZ论坛等相关第三方系统,实现会员同步登陆,数据相互调用。 III、站群系统:实现站点间数据相互推送、主站管理分站的模式。 说明:国微政府门户方案和之前发布的国微政府部门网站,功能不同,方案体系不同。 2020年04月03升级包: 1、更新了微信公众号助手,实现公众号数据互通 2、系统支持一键设置局域网功能 3、系统后台支持一键校验代码,检查代码是否被修改 4、新增后台自备份数据设置 5、支持PHP7.X高版本 2020年04月04升级包: 1、重点解决了用户反馈的安装兼容的问题 2、支持phpstudy、wamp等环境 3、推荐:linux环境推荐用oninstack;windows环境推荐用wamp;其中PHP的环境推荐用PHP7.X 4、如果采用PHP7.X环境,需要在数据库配置文件加行代码,见教程。
级联下拉列表的实现,可以通过前端JavaScript和Ajax实现。具体实现步骤如下: 1. 在HTML页面中,定义多个下拉列表,每个下拉列表都有一个唯一的ID。 2. 在JavaScript中,定义一个函数,用于获取下拉列表的数据。可以使用Ajax从后台获取数据,也可以在前端定义一个JSON对象存储数据。 3. 给每个下拉列表绑定一个事件,例如onchange事件,在事件中调用获取数据的函数,获取下一级下拉列表的数据,并更新下拉列表的内容。 4. 根据选中的下拉列表的值,获取下一级下拉列表需要显示的数据,并将数据填充到下一级下拉列表中。 5. 重复步骤3和步骤4,直到最后一级下拉列表。 以下是一个简单的示例代码,实现了两级联下拉列表: HTML代码: ``` <select id="province"> <option value="">请选择省份</option> <option value="BJ">北京</option> <option value="SH">上海</option> </select> <select id="city"> <option value="">请选择城市</option> </select> ``` JavaScript代码: ``` // 定义省份和城市的数据 var data = { 'BJ': ['东城区', '西城区', '朝阳区'], 'SH': ['黄浦区', '徐汇区', '长宁区'] }; // 获取城市数据的函数 function getCity() { // 获取选中的省份 var province = document.getElementById('province').value; // 获取城市下拉列表 var citySelect = document.getElementById('city'); // 清空城市下拉列表 citySelect.innerHTML = '<option value="">请选择城市</option>'; // 如果省份为空,直接返回 if (province === '') { return; } // 获取对应的城市数据 var cities = data[province]; // 填充城市下拉列表 for (var i = 0; i < cities.length; i++) { var option = document.createElement('option'); option.value = cities[i]; option.innerHTML = cities[i]; citySelect.appendChild(option); } } // 绑定省份下拉列表的change事件 document.getElementById('province').addEventListener('change', function() { // 获取城市数据 getCity(); }); ``` 以上代码实现了根据选中的省份,显示对应的城市列表。如果需要更多的级联下拉列表,只需要在JavaScript中添加对应的函数和数据即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

博客胡

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值