vue----分类----级联选择获取内容
方法一
vue
对话框进行选择
prop中定义的grade不是在数据库中存在的,是进行下拉列表显示内容获取的外键组成的
:props里面的value和label获取的内容要和接口中传入的内容对应起来
sportlist列表存放这级联选择的数据

在data中定义sportlist列表

获取后端中定义的方法,获取需要选择的列表内容

在编辑中需要定义查询
在编辑中定义了grade用来存放两个外键

提交按钮操作
通过数组的方式获取选择的外键内容

将内容放入到页面

后台接口
children决不能换掉这个是进行级联选择必须的

//获取所有景区下的项目
public IActionResult GetTree_Grade(int catalogueid)
{
SportsCatalogueOperate _cate = new SportsCatalogueOperate();
SportEventOperate _eve = new SportEventOperate();
List<object> result = new List<object>();
//1.获取景区
var sportList = _cate.GetQueryable().Where(q => q.IsEnable == true)
.OrderByDescending(q => q.Sort)
.ThenBy(q => q.CreateTime)
.ToList();
foreach (var item in sportList)
{
//2.获取所有项目
var sportList2 = _eve.GetQueryable().Where(q => q.CatalogueID == item.ID)
.Where(q => q.IsEnable == true)
.OrderByDescending(q => q.Sort)
.ThenBy(q => q.CreateTime)
.ToList().Select(q => new
{
label = q.Title,
value = q.ID
});
result.Add(new
{
label = item.Title,
value = item.ID,
children = sportList2
});
}
return Json(result);
}
#endregion
方法二
后端接口

public IActionResult GetSchool()
{
SchoolOperate _school = new SchoolOperate();
var list = _school.GetQueryable().Where(q => q.IsEnable == true)
.OrderByDescending(q => q.Sort)
.ThenByDescending(q => q.CreateTime)
.Select(q => new
{
q.ID,
q.FullName
})
.ToList();
return Json(list);
}
//获取年级/班级
public IActionResult GetGrade(int schid, int? parentid)
{
SchoolGradeOperate _grade = new SchoolGradeOperate();
var query = _grade.GetQueryable().Where(q => q.SchID == schid);
if (parentid > 0) { query = query.Where(q => q.ParentID == parentid);}
else { query = query.Where(q => q.ParentID == null); }
var list = query.OrderByDescending(q => q.Sort)
.ThenBy(q => q.CreateTime)
.Select(q => new
{
q.ID,
q.Name
}).ToList();
return Json(list);
}
public IActionResult GetTree_Grade(int schid)
{
SchoolGradeOperate _grade = new SchoolGradeOperate();
List<object> result = new List<object>();
//1.获取年级
var gradeList = _grade.GetQueryable().Where(q => q.SchID == schid && q.ParentID == null).Where(q => q.IsEnable == true)
.OrderByDescending(q => q.Sort)
.ThenBy(q => q.CreateTime)
.ToList();
foreach (var item in gradeList)
{
//2.获取班级
var classList = _grade.GetQueryable().Where(q => q.ParentID == item.ID)
.Where(q => q.IsEnable == true)
.OrderByDescending(q => q.Sort)
.ThenBy(q => q.CreateTime)
.ToList().Select(q => new
{
label = q.Name,
value = q.ID
});
result.Add(new
{
label = item.Name,
value = item.ID,
children = classList
});
}
return Json(result);
}
vue

<el-row :gutter="24">
<el-col :span="12">
<el-form-item prop="schID" label="学校">
<el-select
v-model="form.schID"
clearable
filterable
placeholder="请选择"
@change="initGrade()"
>
<el-option
v-for="item in catelist"
:key="item.id"
:value="item.id"
:label="item.name"
></el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item
prop="grade"
label="年级班级"
:rules="[{ required: true, message: '不能为空' }]"
>
<el-cascader
:options="gradelist"
v-model="form.grade"
clearable
filterable
:props="{ value: 'value', label: 'label' }"
style="width: 100%"
></el-cascader>
</el-form-item>
</el-col>
</el-row>
data数据

获取内容


编辑

提交

浙公网安备 33010602011771号