首页 新闻 会员 周边 捐助

请教大神们一个问题,如何设计并实现分配或移除的功能?小弟有些想法不知对不对,帮我分析下,谢谢

0
悬赏园豆:15 [待解决问题]

现在有一个页面:
1、 左侧是学生A、B、C、D;
2、右侧有2个页签,一个页签是已选课程,另外一个页签是未选课程。(两个页签的选项加起来是该学生名下有权限的所有课程);
3、学生和课程是多对多的关系。
4、学生和课程的关系用一张中间表student_class来关联,3个字段:id , studentId , classId
问题如下:
1、怎么在页面展示当前选中学生的已选课程(我的想法是:用学生的id去关联查询课程表 sql: select * from student_class sc left join class c on sc.classId = c.id where sc.studentId = 1;) 该页有一个功能:移除已选课程-->就是将已选课程移除到未选课程。请问该如何实现?
2、怎么在未选课程页签展示该学生权限下的未选的剩下课程?该页签有个功能:添加到已选课程-->将未选课程添加到已选课程。?请问该如何实现?求思路?

InewBee的主页 InewBee | 初学一级 | 园豆:191
提问于:2017-10-21 23:00
< >
分享
所有回答(2)
0

//一段权限代码 没时间修改 仅供参考 假数据可以测试通过 这是连接数据库的框架代码的一部分

//就只有js 和 jsp 建议使用假数据 引用json文件来导入学生对象 但不一定好用

<tr>
<td>
<table id="allPermissions"></table>
</td>
<td>
<table id="selfPermissions"></table>
</td>
</tr>

$("#allPermissions").datagrid({
width: 213,
height: 380,
url: '/permission/listAll.do',
title: '所有权限',
rownumbers: true,
striped:true,
singleSelect: true,
fitColumns: true,
columns: [[
{field: 'name', title: '权限名称', width: 100}
]],
//绑定一个点击行出发事件
onClickRow: function (rowIndex, rowData) {
//获取已有权限的所有行
var rows = $("#selfPermissions").datagrid("getRows");
//添加到已有权限后删除所有权限的数据
$("#selfPermissions").datagrid("appendRow", rowData);
$("#allPermissions").datagrid("deleteRow",rowIndex);
},
onLoadSuccess:function (data) {
//做数据过滤 如果是已存在所有权限中的数据 那么所有权限就不要显示该数据
var selfRows = $("#selfPermissions").datagrid("getRows");
//拿到已有权限中的id
var selfIds = $.map(data.rows,function (item,index) {
return item.id;
} )
//倒叙删除 不会少删除数据
for (var i= selfRows.length -1;i >= 0 ;i --){
var row = selfRows[i];
//用数组的方法判断数据是否存在在数组中
if($.inArray(row.id,selfIds)!= -1){
$("#selfPermissions").datagrid("deleteRow",i);
}
}
//克隆對象
allPermissions_data = $.extend(true,{},data);
}
})
$("#selfPermissions").datagrid({
width: 213,
height: 380,
title: '已有权限',
rownumbers: true,
fitColumns: true,
columns: [[
{field: 'name', title: '权限名称', width: 100}
]],
onClickRow:function (rowIndex,rowData) {
//把选中的数据添加回所有权限框中
$("#allPermissions").datagrid("appendRow",rowData);
//删除 已有权限中的选中数据
$("#selfPermissions").datagrid("deleteRow",rowIndex);
},
onLoadSuccess:function (data) {
//做数据过滤 如果是已存在所有权限中的数据 那么所有权限就不要显示该数据
var allRows = $("#allPermissions").datagrid("getRows");
//拿到已有权限中的id
var allIds = $.map(data.rows,function (item,index) {
return item.id;
} )
//倒叙删除 不会少删除数据
for (var i= allRows.length -1;i >= 0 ;i --){
var row = allRows[i];
//用数组的方法判断数据是否存在在数组中
if($.inArray(row.id,allIds)!= -1){
$("#allPermissions").datagrid("deleteRow",i);
}
}
selfPermissions_data = $.extend(true,{},data);
}
})

role_dialog.dialog({
width: 500,
height: 550,
closed: true,
buttons: '#role_btns'
})
})

螽斯羽 | 园豆:97 (初学一级) | 2017-10-22 02:15
0

A表保存所有课程,B表保存已选课程,直接用in 和Not in来筛选就行了。

迷路中的路人甲 | 园豆:93 (初学一级) | 2017-10-23 13:24
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册