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

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

若依有已经封装好的一套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
    评论
在Java中实现下拉列表的多级联,可以使用Swing框架中的JComboBox组件。 JComboBox组件可以实现下拉列表的功能,而多级联需要根据用户选择的上级选项来态更新下级选项的内容。 以下是一个简单的示例代码,实现了两级联: ```java import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; public class MultiLevelComboBoxDemo extends JFrame implements ActionListener { private JComboBox<String> firstComboBox; private JComboBox<String> secondComboBox; public MultiLevelComboBoxDemo() { setTitle("Multi-Level ComboBox Demo"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); // 创建第一个下拉列表 String[] firstItems = {"A", "B", "C"}; firstComboBox = new JComboBox<>(firstItems); firstComboBox.addActionListener(this); // 创建第二个下拉列表 String[] secondItems = {"A1", "A2", "B1", "B2", "C1", "C2"}; secondComboBox = new JComboBox<>(secondItems); // 将下拉列表添加到窗口中 Container contentPane = getContentPane(); contentPane.setLayout(new FlowLayout()); contentPane.add(firstComboBox); contentPane.add(secondComboBox); pack(); setVisible(true); } @Override public void actionPerformed(ActionEvent e) { // 当用户选择第一个下拉列表中的选项时,更新第二个下拉列表的内容 String selectedFirstItem = (String) firstComboBox.getSelectedItem(); String[] secondItems; switch (selectedFirstItem) { case "A": secondItems = new String[]{"A1", "A2"}; break; case "B": secondItems = new String[]{"B1", "B2"}; break; case "C": secondItems = new String[]{"C1", "C2"}; break; default: secondItems = new String[0]; break; } secondComboBox.setModel(new DefaultComboBoxModel<>(secondItems)); } public static void main(String[] args) { new MultiLevelComboBoxDemo(); } } ``` 在该示例中,首先创建了两个下拉列表,分别是`firstComboBox`和`secondComboBox`。当用户选择`firstComboBox`中的选项时,通过监听器实现态更新`secondComboBox`的内容。根据用户选择的上级选项,态生成下级选项的内容,并将其设置为`secondComboBox`的模型。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

博客胡

你的鼓励是我最大的动力

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

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

打赏作者

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

抵扣说明:

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

余额充值