基于若依框架,实现三级联动和修改默认

基于若依框架,实现三级联动和修改默认

在这里插入图片描述

添加

<div class="form-group">
				<label class="col-xs-3 control-label">学生校区:</label>
				<div class="col-xs-3">
					<select id="school" name="schoolSid" class="form-control select2-multiple">
						<option value=""  style="display: none">请选择校区</option>
					</select>
				</div>
			</div>
			<div class="form-group">
				<label class="col-xs-3 control-label">学生年级:</label>
				<div class="col-xs-3">
					<select id="grade" name="gradeGid" class="form-control select2-multiple">
						<option value=""  style="display: none">请选择年级</option>
					</select>
				</div>
			</div>
			<div class="form-group">
				<label class="col-xs-3 control-label is-required" >学生班级:</label>
				<div class="col-xs-3">
					<select id="classes" name="classCid" class="form-control select2-multiple">
						<option value="" style="display: none">请选择班级</option>
					</select>
				</div>
			</div>
$(document).ready(function() {//页面加载时运行此函数  放在最前端
			$.ajax({
				url: ctx + "system/school/select",
				type: 'GET',
				success: function (data) {
					/*移除所选元素的所有内容*/
					$("#school").empty();
					/*在所选元素中追加默认下拉框,防止没有默认选中元素*/
					$("#school").append("<option value=''>请选择校区</option>");
					/*通过for循环,将校区表中的内容追加到所选元素中*/
					for (var i = 0; i < data.length; i++) {
						$("#school").append("<option value='" + data[i].schoolId + "'>" + data[i].schoolName + "</option>");
					}
				}
			});
			/*当所选元素中的内容发生改变时,就运行以下内容*/
			$("#school").change(function () {
				$.ajax({
					url: ctx + "system/grade/select",
					type: 'GET',
					data: {
						/*获取所选元素中的内容,将其传输到后端服务器*/
						schoolSid: $("#school").val(),
					},
					success: function (data) {
						$("#grade").empty();
						$("#grade").append("<option value=''>请选择年级</option>");
						for (var i = 0; i < data.length; i++) {
							$("#grade").append("<option value='" + data[i].gradeId + "'>" + data[i].gradeName + "</option>");
						}
					}
				})
			})
		})
			$("#grade").change(function () {//同上面一样
				$.ajax({
					url: ctx + "system/class/select",
					type: 'GET',
					data: {
						gradeGid: $("#grade").val(),
					},
					success:function (data) {
						$("#classes").empty();
						$("#classes").append("<option value=''>请选择班级</option>");
						for (var i = 0; i < data.length; i++){
							$("#classes").append("<option value='" + data[i].classId + "'>" + data[i].className + "</option>");
						}
					}
				})
			});

GradeMapper.xml

根据获取的校区外键,查询年级表中的内容

<select id="selectSysGradeBySchoolSid" parameterType="Integer" resultMap="SysGradeResult">
        <include refid="selectSysGradeVo"/>
        where school_sid=#{schoolSid}
    </select>

schoolController

查询校区表中的数据

在这里插入图片描述

@RequestMapping("/select")
    @ResponseBody
    public List<SysSchool> select(){
        List<SysSchool>list=sysSchoolService.selectSysSchoolList(new SysSchool());
        return list;
    }

gradeController

在这里插入图片描述

@RequestMapping("/select")
    @ResponseBody
    public List<SysGrade> select(String schoolSid){
        List<SysGrade>list=sysGradeService.selectSysGradeBySchoolSid(Integer.parseInt(schoolSid));
        return list;
    }

班级同上,我就不在赘述了

修改默认

<div class="form-group">
                <label class="col-xs-2 control-label">学生校区:</label>
                <div class="col-xs-2">
                    <select id="school" class="form-control select2-multiple">
                        <option value="">请选择校区</option>
                        <option th:each="school:${school}" th:value="${school.schoolId}" th:text="${school.schoolName}" ></option>
                    </select>
                </div>
            </div>
            <div class="form-group">
                <label class="col-xs-2 control-label">学生年级:</label>
                <div class="col-xs-2">
                    <select id="grade"  class="form-control select2-multiple"  >
                        <option value="">请选择年级</option>
                        <option th:each="grade:${grade}" th:value="${grade.gradeId}" th:text="${grade.gradeName}" ></option>
                    </select>
                </div>
            </div>
            <div class="form-group">
                <label class="col-xs-2 control-label is-required">学生班级:</label>
                <div class="col-xs-2">
                    <select id="classes" name="classCid" class="form-control select2-multiple">
                        <option value="">请选择班级</option>
                        <option th:each="classes:${classes}" th:value="${classes.classId}" th:text="${classes.className}" th:field="*{classCid}"></option>

                    </select>
                </div>
            </div>
$(document).ready(function() {//页面加载时运行此函数  放在最前端
            /*接收后端映射过来的数据,赋值给变量*/
            var schoolId = [[${schoolSid}]];
            var gradeId = [[${gradeGid}]];
            /*将所选的变量值赋值给所选元素,作用是默认选中值*/
            $("#school").val(schoolId);
            $("#grade").val(gradeId);

            $("#school").change(function () {
                $.ajax({
                    url: ctx + "system/grade/select",
                    type: 'GET',
                    data: {
                        schoolSid: $("#school").val(),
                    },
                    success:function (data) {
                        /*移除所选元素的所有内容*/
                        $("#grade").empty();
                        $("#grade").append("<option value=''>请选择年级</option>");
                        for (var i = 0; i < data.length; i++){
                            $("#grade").append("<option value='" + data[i].gradeId + "'>" + data[i].gradeName + "</option>");
                        }
                    }
                });
            })
            $("#grade").change(function () {//同上面一样
                $.ajax({
                    url: ctx + "system/class/select",
                    type: 'GET',
                    data: {
                        gradeGid: $("#grade").val(),
                    },
                    success:function (data) {
                        $("#classes").empty();
                        $("#classes").append("<option value=''>请选择班级</option>");
                        for (var i = 0; i < data.length; i++){
                            $("#classes").append("<option value='" + data[i].classId + "'>" + data[i].className + "</option>");
                        }
                    }
                })
            });
        })

StudentController

我们先通过学生表,将班级外键的值取出来,然后在根据我们取出的班级外键值,作为班级主键,查询年级表中的内容,再将年级外键值取出来,查询校区表中的数据。

  @GetMapping("/edit/{studentId}")
    public String edit(@PathVariable("studentId") Long studentId, ModelMap mmap)
    {

        /*查询校区内容*/
        mmap.put("school",schoolService.selectSysSchoolList(new SysSchool()));
        mmap.put("student", studentService.selectStudentById(studentId));
        /*将学生表中的班级外键值取出,这样我们就获取了班级表的主键值了,
        原因是学生表的班级外键值和班级表的主键值是一致的,我们在通过学生表的班级外键值来查询班级表,同理年级的主键值也是如此获取的*/

		/*这一步的主要作用是:我们获取班级/年级/校区的主键值,用于默认下拉框*/
        String classCid=studentService.selectStudentById(studentId).getClassCid();
        String gradeGid=classService.selectSysClassById(Integer.parseInt(classCid)).getGradeGid();
        String schoolSid=gradeService.selectSysGradeById(Integer.parseInt(gradeGid)).getSchoolSid();
        /*将我们获取的外键值映射到前端界面,实现下拉框的默认实现*/
        mmap.put("classCid",classCid);
        mmap.put("gradeGid",gradeGid);
        mmap.put("schoolSid",schoolSid);
        /*根据我们前面获取的年级外键/校区外键 查询班级表/年级表中的内容*/
        mmap.put("classes",classService.selectSysClassByGradeGid(Integer.parseInt(gradeGid)));
        mmap.put("grade",gradeService.selectSysGradeBySchoolSid(Integer.parseInt(schoolSid)));

        return prefix + "/edit";
    }
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

平平常常一般牛

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值